FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: andies am 10 September 2018, 11:08:43

Titel: Minimum sleep
Beitrag von: andies am 10 September 2018, 11:08:43
Wenn man mit sleep eine Pause definiert, gibt es dann eine Minimalgrenze, die Perl/FHEM nicht unterschreitet? Klarerweise ist das die Null, aber würde auch zB. sleep 0.1 exakt ausgeführt, wenn die anderen abzuarbeitenden Prozesse es gestatten?
Titel: Antw:Minimum sleep
Beitrag von: CoolTux am 10 September 2018, 11:21:46
Zitat von: andies am 10 September 2018, 11:08:43
Wenn man mit sleep eine Pause definiert, gibt es dann eine Minimalgrenze, die Perl/FHEM nicht unterschreitet? Klarerweise ist das die Null, aber würde auch zB. sleep 0.1 exakt ausgeführt, wenn die anderen abzuarbeitenden Prozesse es gestatten?

Meines Wissens, JA.
Titel: Antw:Minimum sleep
Beitrag von: r00t2 am 10 September 2018, 11:28:39
Solange das OS, was im Hintergrund läuft, kein dediziertes RTOS ist, was ein vorhersagbares Zeitverhalten der Systemaufrufe oder vorhersagbare Reaktionszeiten auf Ereignisse garantiert, sehe ich es als schwierig bis unmöglich an, zu sagen, dass ein Sleep so lange dauert, wie im Code hinterlegt ist - auch unter "guten Bedingungen" der anderen Prozesse.

Da kann einfach viel zu viel dazwischen kommen, was eine verlängerte Ausführung bedingen kann.

Perl an sich bietet Sleep-Funktionen bis nanosleep() an, wenn entsprechende HiRes Timer verfügbar sind: https://perldoc.perl.org/Time/HiRes.html
Titel: Antw:Minimum sleep
Beitrag von: Beta-User am 10 September 2018, 11:37:38
Guter Einwand mit der OS-Abhängigkeit.
Da es hier darum geht, mit dem gegebenen Unfeld ein möglichst genaues Ergebnis zu haben: sollte es ggf. nicht auch helfen, eine weitere Instanz von FHEM aufzurufen (wenn man mehrere Kerne hat) und den Kram darin auszuführen?
Titel: Antw:Minimum sleep
Beitrag von: CoolTux am 10 September 2018, 12:02:18
Zitat von: andies am 10 September 2018, 11:08:43
Klarerweise ist das die Null, aber würde auch zB. sleep 0.1 exakt ausgeführt, wenn die anderen abzuarbeitenden Prozesse es gestatten?

Es wurde ja ziemlich exakt gefragt. Und das wir hier nicht von Perl sleep reden sondern von FHEM sleep war glaube auch ansatzweise deutlich.