Execute a limited amount of code (usually a bytecode, or up to the
next backward jump, or up to the next message send) of the receiver,
which must in a ready-to-run state (neither executing nor terminating
nor suspended), then restart running the current process. aSemaphore
is used as a means to synchronize the execution of the current process
and the receiver and should have no signals on it. The current process
should have higher priority than the receiver.
suspend
Do nothing if we're already suspended. Note that the blue book made
suspend a primitive - but the real primitive is yielding control to
another process. Suspending is nothing more than taking ourselves out
of every scheduling list and THEN yielding control to another process
yield
Yield control from the receiver to other processes