Coscheduling

Coscheduling is the principle for concurrent systems of scheduling related processes to run on different processors at the same time (in parallel).

As a result, the application makes progress at the rate of at most one interprocess interaction per time slice, and will have low throughput and high latency.

Gang scheduling is a stricter variant of coscheduling that disallows fragments completely.

[1] Explicit coscheduling requires all processing to take place at the same time, and is typically implemented by global scheduling across all processors.

The original definition is that the process working set must be coscheduled (scheduled for execution simultaneously) for the parallel program to make progress.