[e-lang] Properties of E scheduling
david.nospam.hopwood at blueyonder.co.uk
Tue Jul 5 20:30:49 EDT 2005
Dan Bornstein wrote:
>> When the statusHolder in VatA performs an eventual-send... Should it ever
>> arrive at VatS, VatS will unserialize it and queue it on its own pending
>> delivery queue.... Because only eventual references span between vats,
>> the spreadsheet can only affect VatA by eventual-sending to objects hosted by
>> VatA. This cannot affect any turn already in progress in VatA--VatA only
>> queues the pending delivery...
> While reading these paragraphs, I began wondering: Does E currently process
> the queueing of incoming eventual-sends effectively as separate vat turns?
> E.g., if during some turn a piece of code queues up two messages, is it
> possible for the comm system to interleave a third message in the middle of
> those two?
This *should* be possible. The reason is that guaranteeing that messages-to-self
take priority over messages from other vats would impede fairness: it would be
too easy for a vat to inadvertently starve itself from receiving any messages
from other vats, increasing the probability of livelock.
> Or will incoming messages always get added to the queue while no other
> turns are in progress?
IIUC, E does not make this guarantee. This allows (but does not require) an E
implementation to schedule the processing of messages received from different
IMHO it is worth considering whether E should require stronger fairness
properties. For example, should it require finite delay before a given message
is either received or the target reference is broken?
David Hopwood <david.nospam.hopwood at blueyonder.co.uk>
More information about the e-lang