Schedules and transitions¶
To process n concurrent events, the art framework creates n schedules, which can be thought of as independent event-processing loops. The following diagram represents the transitions that are respected by a single-schedule program (i.e. one event in flight at a time):
The arrows indicate the next allowed processing level from the current one. For example, if the current processing level is the
Run, the next processing level can be a new
SubRun, a new
Run or the end of the job (indicated by
For art 3.00.00, the right-most event loop is duplicated across multiple schedules to support concurrent events. For example, if the framework is configured to process two concurrent events, the transition diagram looks like:
The TBB scheduler dynamically decides which schedule will process a given event. In other words, there is no guarantee that (e.g.) the first schedule will process odd-numbered events and the second schedule will process even-numbered events.
art provides the following guarantees regarding schedules:
- A schedule processes only one event at a time; the framework will never concurrently process two events on one schedule.
- A schedule cannot be told which events to process over the course of a job.
- art does not currently process
SubRuns in parallel: serialization occurs at
SubRunboundaries. This will change in future versions of art.