I'm also using vat semantics inspired from E for my Reactive Demand Programming model, with great success.
I'm using a temporal vat model, which has a lot of nice properties. In my model:
- Each vat has a logical time (
getTime
).- Vats may schedule events for future times (
atTime, atTPlus
).- Multiple events can be scheduled within an instant (
eventually
).- Vats are loosely synchronized. Each vat sets a 'maximum drift' from the lead vat.
- No vat advances past a shared clock time (typically, wall-clock). This allows for soft real-time programming.
This model is designed for scalable, soft real-time programming. The constraints on vat progress give me an implicit real-time scheduler (albeit, without hard guarantees), while allowing a little drift between threads (e.g. 10 milliseconds) can achieve me an acceptable level of parallelism on a multi-core machine.
Further, timing between vats can be deterministic if we introduce explicit delays based on the maximum drift (i.e. send a message of the form '
doSomething `atTime` T
' where T is the sum of getTime and getMaxDrift.
Previously: Why are objects so unintuitive
No comments:
Post a Comment