Welche Threads gibt es im Zusammenhang mit HSL 2.0-Bausteinen?
1.Threading-Konzept HSL20
Es gibt folgende Thread-Kontexte, mit denen ein HSL 2.0-Baustein in Berührung kommt:
1.1.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.
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.
1.2.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.
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!
1.3.Threads 3 bis 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.
Die Bausteine müssen dann selbst für Multithreading-Kompatibilität sorgen.