Which block cipher mode(s) is most appropriate in these applications? I have a few questions I'm stuck on for a cryptography course I'm doing, any help would be much appreciated.

The first application is for decryption on a multicore processor. I assume any of ECB, CBC, CFB or CTR would be suitable since decryption would be faster when performed in parallel, but are any of them significantly more suitable than the others and how?

The second is where it is preferred/desired to use a processor's idle time for precomputing encryption or decryption tasks before the plaintext or ciphertext is available. Not really sure how to tackle this one.
The first application is for decryption on a multicore processor. I assume any of ECB, CBC, CFB or CTR would be suitable since decryption would be faster when performed in parallel, but are any of them significantly more suitable than the others and how?


CTR, CBC and CFB all allow parallel decryption. CTR allows you to decrypt any ciphertext block independently, while the other two allow you to decrypt a block if you know the ciphertext of both it and the previous one.

However, of those only CTR also allows parallel encryption.
ECB is insecure in most cases, so it shouldn't be used, but also supports both.


  The second is where it is preferred/desired to use a processor's idle time for precomputing encryption or decryption tasks before the plaintext or ciphertext is available. Not really sure how to tackle this one.


Like ECB, both CBC and CFB require knowing the plaintext to compute any block encryptions (beyond the first block, in the case of CFB). CTR allows you to compute the entire keystream in advance.



However, in the real world you would most likely want to use authenticated encryption. Meaning you'd want to consider authenticated cipher modes as well. Many of them use CTR internally for the encryption part, fulfilling both of the above. GCM is the most common, and also allows the authentication part to be calculated in parallel.