cpLeaveCriticalSection


Beschreibung

Dieser Befehl dient zum Absichern kritischer Programmbereiche.

Wird ein Codeteil mit cpEnterCriticalSectioncpLeaveCriticalSection gekapselt, wird dieser Codeteil in jedem Fall abgearbeitet, auch wenn Ereignisse stattfinden, die die eingeschlossenen Befehlszeilen erneut ausführen möchten, bevor der gesamte Teil vollständig ausgeführt ist.

Gleichzeitig landen weitere Aufrufe dieses Bereichs in einer Warteschlange. Sie werden der Reihe nach ausgeführt. Kein Teil geht verloren.

Es kann dadurch allerdings zu Verzögerungen im Ablauf der gesamten Zeitmessung kommen. Daher diese Befehle sparsam und nur dort einsetzen, wo es unabdingbar ist.

Syntax


Befehl cpLeaveCriticalSection
Funktion Absichern von Bereichen gegen ungewollte mehrfache Aufrufe. Ist global gültig.
Typ

Codebeispiel

begin
  ...
  cpEnterCriticalSection;
  if cpGetPowerOnSlots() then
    cpPowerOnSlots(false)
  else
    cpPowerOnSlots(true);
  cpSleep(5000);
  cpLeaveCriticalSection;
  ...
end.

Dieser Code prüft, ob Strom auf der Bahn ist. Ist das der Fall, wird der Bahnstrom abgeschaltet, ist der Strom aus, wird er aktiviert.

Allerdings ist die Befehlsfolge hier in einen kritischen Bereich gekapselt. Versucht irgendein anderes Ereignis, cpGetPowerOnSlots vor Ablauf der 5 sekündigen Wartezeit auszuführen, wird dieses Event hinten angestellt.

Das gilt global für das gesamte AddOn, NICHT nur für ein Event!

Weitere Informationen finden sich in der Cockpit-XP Dokumentation zu AddOns (CpXP-AddOn.pdf) auf den Seiten 17 und 18.



Start - FAQ - Glossar - Sitemap - Impressum

 
cockpit-xp/addon/befehlsreferenz/cpleavecriticalsection.txt · Zuletzt geändert: 2020/11/28 12:15 (Externe Bearbeitung)