Channel operations receive
and send
are performed eagerly, i.e., for
the current process, each application of the ioc
loop greedily performs as
many yielding operations as possible, and will break only after encountering a
channel that causes the process to block
.
Alternatively a process may be run lazily, by including the yield proc
expression, which forces control to be yielded back to the scheduler, and
re-enqueues the process at the end of the global run queue.