Inhaltsverzeichnis
cpLeaveCriticalSection
Beschreibung
Dieser Befehl dient zum Absichern kritischer Programmbereiche.
Wird ein Codeteil mit cpEnterCriticalSection … cpLeaveCriticalSection 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.