Task management overview.¶Task management will be handled by TBB. There will be tasks to represent a source read-event operation, a schedule iteration and an end-path operation.
- Source read-events are serial with respect to each other but in parallel with schedule iterations and end-path operations.
- Schedule iterations may occur in parallel with each other and with read-event and end-path operations. Only one module at a time may operate on a given event.
- End-path operations are serial with respect to each other but in parallel with read-event operations and schedule iterations. End-path modules will operate simultaneously on the same event.
Service interactions.¶In parallel mode:
- Sources may interact only with global services while reading an event.
- Trigger-path modules may interact with per-schedule or global services while processing an event. It shall be possible to get a
ServiceHandleto the correct per-schedule service without a module (or algorithm code called therefrom) needing to provide schedule-specific information.
- End-path modules may interact with global services only while processing or writing an event.
On-demand module execution.¶
In the first version of parallel art, on-demand operation shall be disabled for multi-schedule configurations. According to Chris Jones and Vincenzo Innocente, the possibility of deadlock with parallel module execution with on-demand if tasks "wait" for a resource or other module execution requires that the dependency tree be known in advance and tasks scheduled accordingly. In other words, if we are going to have on-demand operation we need to know in advance which modules depend upon which other modules.