Mon Aug 3 11:12:34 CEST 2009

Engine vs. Coroutines

The difference between an engine[1] and a coroutine is that an engine
uses timed preemption, while a coroutine only uses volontary
preemption.  ``An engine runs until its fuel runs out''[3].

It seems to me that this is somewhere between full nondeterministic
preemption and cooperative multitasking, by making the preempt points
happen only at control points with consistent state -- i.e. not in the
middle of some low-level routine that uses a shared resource.

[1] http://en.wikipedia.org/wiki/Engine_%28computer_science%29
[2] http://list.cs.brown.edu/pipermail/plt-scheme/2002-September/000620.html
[3] http://www.scheme.com/tspl2d/examples.html#g2433