1. A method for scheduling a plurality of program units, the method comprising: starting a process within an operating system executing in a system having a plurality of multiple processor units, each of the multiple processor units having a plurality of processors; starting the plurality of program units within the operating system, the plurality of program units associated with the process, wherein the plurality of program units execute on two or more of the plurality of multiple processor units; and upon the occurrence of a context shifting event for a first program unit of the plurality of program units, performing the tasks of: migrating each of one or more of the plurality of program units that are not executing on a selected multiple processor unit of the plurality of multiple processing units to the selected multiple processor unit, synchronizing the scheduling of each of the plurality of program units, setting the context shifting event in a context of each of the plurality of program units to the same context shifting event as the first program unit, and processing by each of the plurality of program units the same context shifting event; wherein the context shifting event comprises an exception, a non-local goto, a signal or a system call.