HSL2.0 - Threading
Inhalt
1.
Threading-Konzept HSL20
1.1.
Thread 1 - Der Logik-Thread
1.2.
Thread 2 - Der HSL 2.0-Kontext-Thread
1.3.
Threads 3 bis n - Eigene Threads
2.
Ablauf-Beispiel
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.

### 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.
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.

## 2.Ablauf-Beispiel

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