<parallel, operating system> A form of multitasking where it is the
responsibility of the currently running task to give up the processor to allow
other tasks to run. This contrasts with pre-emptive multitasking where the task
scheduler periodically suspends the running task and restarts another.
Cooperative multitasking requires the programmer to place calls at suitable
points in his code to allow his task to be descheduled which is not always easy
if there is no obvious top-level main loop or some routines run for a long time.
If a task does not allow itself to be descheduled all other tasks on the system
will appear to "freeze" and will not respond to user action.
The advantage of cooperative multitasking is that the programmer knows where the
program will be descheduled and can make sure that this will not cause unwanted
interaction with other processes. Under pre-emptive multitasking, the scheduler
must ensure that sufficient state for each process is saved and restored that
they will not interfere. Thus cooperative multitasking can have lower overheads
than pre-emptive multitasking because of the greater control it offers over when
a task may be descheduled.
Cooperative multitasking is used in RISC OS, Microsoft Windows and Macintosh
COOL:Gen « Co-operative Development Environment «
Cooperative Information System « cooperative
» coordinate » Coordinated Universal Time »
Coordinating Committee for Intercontinental Research