SE701:FB:Usability and Interoperability
NPMTR for “Non-Preemptive Multi-Threaded Resource�?.
Depend on the underlying operating environment, the service of a resource may behave differently. For example Archimedes uses a run-time environment based on RTSJ, that allows the use of an event queue for each active FB.
The execution environment stores any output event that's produced by any FB to the event stores of the corresponding subscriber FBs. Any active consumer FB issues a blocking read from its input event queue, allows the processes not to be suspended.
However, the overheads may be large (monitoring latch, event queues, etc.), and the behavior of the system may be errorneous, queuing input events cause a combinatorial explosion of possible system states, making it difficult to predict if and when unsafe system behaviors may occur.
Assumed resource model
- all threads that lead to event generation and propagation between FBs in the resource, and all processes that modify the values of FB output variables operate at the same priority
- None of the threads may pre-emptively interrupt another
- Threads in different resources may operate at different priorities as long as (i) and (ii) are satisfied
- No FB instance in the resource may have an independent thread of execution except SIFBs.
- SIFB may have multiple internal threads, as long as those threads that modify output variable values and/or cause output event generation meet conditions (i) and (ii)
- All processing described in the critical region is performed in the same thread that caused the entry of the critical region
- All processing associated with the occurrence of an event at an event input of a basic or composite FB shall be executed in the same thread that caused the issuance of the event at the other end of the associated event connection.
It is a consequence of these last two rules that a whole “daisy chain�? of event connections executes as a critical region. For this reason it is important to ensure that algorithms be short pieces of code that do not block the execution of other threads in the resource that may be awaiting their turn. For algorithms, as in life, it is a good rule not to be greedy (short algorithm execution time). Where answers specific to this resource model are given, they will be identified with the notation NPMTR for “Non-Preemptive Multi-Threaded Resource�?.
Essential difference of semantic execution approaches
Difference in the way how blocks in the network are activated which depends on the way of passing event signals between function blocks.