HSL 2.0-Framework  1.9
Beschreibung des Frameworks
Threading

Welche Threads gibt es im Zusammenhang mit HSL 2.0-Bausteinen?

Threading-Konzept HSL20

Es gibt folgende Thread-Kontexte, mit denen ein HSL 2.0-Baustein in Berührung kommt:

Thread 1 - Der Logik-Thread

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.

Thread 2 - Der HSL 2.0-Kontext-Thread

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!

Threads 3-n - Eigene Threads

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.

Ablauf-Beispiel

Den Baustein 10704_Telegram generator with random interval.py finden Sie im Beispiel-Ordner unter "\threading"

Änderungen V1.9:
Code-Beispiel und Erklärung durch Hinweis auf kommentierten Beispiel-Baustein ersetzt
Kapitel zu eigenen Threads überarbeitet