A strands package should handle the following set of events. The examples section describes some mundane uses of these events to implement functionality commonly found in today's schedulers.
All the events described below appear in the interface definition for the module Strand and should be prefixed with `` Strand.''. The strand parameters are REFANY's because the precise definition of a strand is not relevant to the system. The handlers with sufficient interest can attempt a narrow operation at run time.
The events described below are raised by various system entities to signal changes in crucial system state and to request some sort of a response from involved parties. Thus, the failure mode describes what happens when an involved party (e.g. a strand scheduler tending a particular strand) fails to take appropriate steps to cope with the change in system state (e.g. reschedules the strand even though it is currently not runnable). There is no detection of failure, since such detection is in general impossible; however, the Strand interface has been designed such that failures only affect the parties that trust the failed module. The failure mode for each event is described in detail below.
All events in the strand interface are bounded.