Seite 1 von 1

Timer

Verfasst: 27. Dez 2018 18:05
von sadbi
Liebe Community!

Es stellt sich für mich die Frage, ob die Funktion des timers den Rechner während der "Wartezeit" blockiert, oder ob alle anderen rules in dieser Zeit ausgeführt werden können.

Danke
Sebastian

Re: Timer

Verfasst: 27. Dez 2018 19:01
von limdul79
Der Timer blockiert nicht und kostet quasi kaum Resourcen. Deswegen ist er ideal um Sachen "später" zu tun bzw. zeitintensive Dinge auszulagern.

Re: Timer

Verfasst: 27. Dez 2018 19:04
von sadbi
Hallo limdul79!

Danke für die Antwort, das hatte ich mir erhofft.

Danke
Sebastian

Re: Timer

Verfasst: 28. Dez 2018 11:10
von BOP
sadbi hat geschrieben: 27. Dez 2018 18:05 ... oder ob alle anderen rules in dieser Zeit ausgeführt werden können.
Sogar die Rule, in der der Timer gestartet wird, wird nach dem Starten des Timers direkt weiter verarbeitet (und dann verlassen).

Re: Timer

Verfasst: 29. Dez 2018 19:36
von udo1toni
Man sollte noch ein paar Dinge dazu erklären:
  1. openHAB hat einen Scheduler, der sich um diese Dinge kümmert.
  2. Rules die per Time cron getriggert werden fallen darunter, genau wie
  3. Code, der mittels createTimer(<Zeitpunkt>,[|<auszuführender Code>]) im Speicher abgelegt wird.
  4. Der Scheduler hat default nur zwei (!) Threads, in denen er den Code zur Ausführung bringt.
  5. Man kann die Anzahl der bereitgehaltenen Threads erhöhen, das führt aber zu erhöhtem Speicherbedarf (wichtig bei embedded Systemen wie dem RPi3).
Man sollte also vermeiden, mehrere Rules mit identischem Time cron anzulegen, bzw. gezielt solche Rules nicht parallel starten, sondern um einige Sekunden versetzt.