<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE701%3AFB%3AUsability_and_Interoperability</id>
	<title>SE701:FB:Usability and Interoperability - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE701%3AFB%3AUsability_and_Interoperability"/>
	<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE701:FB:Usability_and_Interoperability&amp;action=history"/>
	<updated>2026-06-19T23:27:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.kram.nz/index.php?title=SE701:FB:Usability_and_Interoperability&amp;diff=20&amp;oldid=prev</id>
		<title>Mark: New page: =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 ...</title>
		<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE701:FB:Usability_and_Interoperability&amp;diff=20&amp;oldid=prev"/>
		<updated>2008-02-15T19:38:30Z</updated>

		<summary type="html">&lt;p&gt;New page: =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 ...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=NPMTR for “Non-Preemptive Multi-Threaded Resource�?.=&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
The execution environment stores any output event that&amp;#039;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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Assumed resource model==&lt;br /&gt;
# 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&lt;br /&gt;
# None of the threads may pre-emptively interrupt another&lt;br /&gt;
# Threads in different resources may operate at different priorities as long as (i) and (ii) are satisfied&lt;br /&gt;
# No FB instance in the resource may have an independent thread of execution except SIFBs.&lt;br /&gt;
# 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)&lt;br /&gt;
# All processing described in the critical region is performed in the same thread that caused the entry of the critical region&lt;br /&gt;
# 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.&lt;br /&gt;
&lt;br /&gt;
It is a consequence of these last two rules that a whole&lt;br /&gt;
“daisy chain�? of event connections executes as a critical&lt;br /&gt;
region. For this reason it is important to ensure that algorithms&lt;br /&gt;
be short pieces of code that do not block the execution&lt;br /&gt;
of other threads in the resource that may be awaiting&lt;br /&gt;
their turn. For algorithms, as in life, it is a good rule not to&lt;br /&gt;
be greedy (short algorithm execution time). Where answers&lt;br /&gt;
specific to this resource model are given, they will be identified&lt;br /&gt;
with the notation NPMTR for “Non-Preemptive&lt;br /&gt;
Multi-Threaded Resource�?.&lt;br /&gt;
&lt;br /&gt;
==Essential difference of semantic execution approaches==&lt;br /&gt;
Difference in the way how blocks in the network are activated which depends on the way of passing event signals between function blocks.&lt;/div&gt;</summary>
		<author><name>Mark</name></author>
	</entry>
</feed>