A centralized or distributed task pool is maintained, into which new tasks are placed and from which tasks are taken for allocation to processors. Figure 2.19 illustrates a particularly simple task scheduling scheme that is nevertheless effective for moderate numbers of processors. This strategy was used previously in Section 1.4.4 . A central manager task is given responsibility for problem allocation. Each worker repeatedly requests and executes a problem from the manager.
Workers can also send new tasks to the manager for allocation to other workers.
Workers request tasks from submanagers, which themselves communicate periodically with the manager and with other submanagers to balance load between the sets of processors for which they are responsible. In completely decentralized schemes, there is no central manager. Instead, a separate task pool is maintained on each processor, and idle workers request problems from other processors. In effect, the task pool becomes a distributed data structure that is accessed by the different tasks in an asynchronous fashion. A variety of access policies can be defined.