This article needs additional citations for verification. (July 2017) |
An engine is a continuation-based construct that provides timed preemption. Engines which can contain other engines are sometimes called Nesters[1] and engines which do not have this ability are then called flat engines or "solo engines". To implement timed preemption there needs to be a clock. This clock can measure real time or simulated time. Simulated time can be implemented in a language like Scheme, by making each function start with decrementing the clock.[2]
(define-syntax timed-lambda
((_ formals exp1 exp2 ...)
(lambda formals (decrement-timer) exp1 exp2 ...))))