In short, static assignment (assign tasks before program begins running) is preferred when we know in advance the cost of each job. In Assignment 1, we used static assignment when calculating the Mandelbrot set.
@cmusam what if the amount of work in each task changes constantly? Then static assignment may not be as useful if the scheduled work becomes less equally divided among threads. This in turn may cause the system to lose performance.
Whether to use static or dynamic has to depend a lot on the application in question.
@Funky9000, I think if the amount of work in each task changes constantly, then the assignment of work to each thread cannot be pre-determined, right, and it wouldn't even be in consideration for static assignment. The slide has the assignment of work to each thread being pre-determined as a characteristic and that doesn't apply in the case you mentioned because the work is not predictable- in that case a more dynamic assignment would be more effective.
I think the assumption here is that each task takes the same amount of time to be processed.