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 Stop).

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 SubRun boundaries. This will change in future versions of art.