The reason we place work in per-thread work queues is because this simplifies the process that threads use to fetch their work. By having queues for all of them we are less likely to have a bottleneck on fetching work because fewer threads will be competing for the synchronization locks that protect these queues. The only time threads should compete over a job is when a thread has an empty queue and thus steals from some other thread.
The reason we place work in per-thread work queues is because this simplifies the process that threads use to fetch their work. By having queues for all of them we are less likely to have a bottleneck on fetching work because fewer threads will be competing for the synchronization locks that protect these queues. The only time threads should compete over a job is when a thread has an empty queue and thus steals from some other thread.