HSL 2.0-Framework
1.9
Beschreibung des Frameworks
|
Welche Threads gibt es im Zusammenhang mit HSL 2.0-Bausteinen?
Es gibt folgende Thread-Kontexte, mit denen ein HSL 2.0-Baustein in Berührung kommt:
Die HomeServer-Logikengine läuft in einem einzigen Thread ab.
Um die Logik in ihrer Laufzeit nicht zu beeinflussen, läuft ein HSL 2.0-Baustein in einem anderen Thread-Kontext (Thread 2).
Daher ordnet das Framework alle Eingangstelegramme eines HSL 2.0-Bausteins in eine Queue ein.
Innerhalb des Logik-Threads (Thread 1) ist die Verarbeitung des Bausteins damit zu Ende.
Jeder HSL 2.0-Baustein bestimmt einen Kontext, in dem er abläuft. Dieser ist durch einen eigenen Thread von der
übrigen Logik getrennt. Innerhalb dieses Threads wird die Queue abgearbeitet, welche die durch Thread 1 eingefügten Eingangstelegramme,
sowie sämtliche Aufrufe von Callback-Methoden, die durch das Framework zur Verfügung gestellt werden, enthält.
Dadurch ist sichergestellt, dass innerhalb eines Threads/Kontexts immer nur eine Methode gleichzeitig abläuft.
Achtung: Damit die Belastung des Geräts gering bleibt, sollten sich alle Bausteine innerhalb eines Themengebiets einen Kontext teilen!
Es ist möglich, dass Bausteine eigene Threads erzeugen. Hier ist jedoch zu beachten, dass diese Threads außerhalb des
HSL 2.0-Kontexts laufen. Dies kann bedeuten, dass mehrere Dinge parallel abgearbeitet werden.
Die Bausteine müssen dann selbst für Multithreading-Kompatibilität sorgen.
Den Baustein 10704_Telegram generator with random interval.py finden Sie im Beispiel-Ordner unter "\threading"