Download - IP-Symcon

Download - IP-Symcon Download - IP-Symcon

13.07.2015 Aufrufe

IPS_SemaphoreEnterboolean IPS_SemaphoreEnter ( string $Name , integer $Wartezeit )ParameterlisteNameWartezeitName, der die Semaphore beschreibtMillisekunden, die gewartet wird, bis der Befehl abbrichtRückgabewerteTRUE, wenn die Semaphore betreten wurde. FALSE, wenn die Semaphore vor Ablauf der Wartezeit nicht betretenwerden konnteBeschreibungDieser Befehl setzt ein Semaphor (ein Zeichen mit Signalwirkung), das dazu verwendet werden kann, den Start andererSkripte zu verhindern. Ein Skript kann sich so vor konkurrierenden anderen Skripten schützen und natürlich auch voranderen Instanzen von sich selbst.Der Befehl versucht, das Semaphor mit dem Namen SemaphorName zu setzen. Existiert das Semaphor bereits, wird dieAbarbeitung des Skripts für die Zeitdauer Wartezeit (in Millisekunden) ausgesetz. Danach wird noch ein weitererVersuch unternommen.In IP-Symcon können grundsätzlich mehrere Skripte gleichzeitig laufen. Solange ein Skript keinen exklusiven Zugriff aufVariablen oder System-Ressourcen benötigt, stellt dieser Fall kein Problem dar. Falls aber ein exklusiver Zugriffunumgänglich ist, kann mit dem Befehl ein Semaphor gesetzt werden. Der Befehl prüft zuerst, ob das Semaphor mit demangegebenen Namen bereits gesetzt ist. Existiert es noch nicht, wird es durch den Befehl gesetzt und liefert TRUE alsRückmeldung. Alle anderen Skripte, die danach versuchen das selbe Semaphor zu setzen, müssen eine Warteschleife derDauer Wartezeit durchlaufen. Nach Ablauf der Wartezeit versucht der Befehl erneut das Semaphor zu setzen. Ist er dabeierfolgreich, wird TRUE zurückgemeldet, andernfalls FALSE. Wenn man gewährleisten will, dass während der Laufzeiteines Skripts die von ihm verwendeten Daten nicht von anderen, gleichzeitig laufenden Skripten verfälscht werden, kannman diesen Befehl verwenden, um sich exklusiven Zugriff zu sichern.Bei der Verwendung dieses Befehls ist darauf zu achten, dass das Semaphor möglichst bald wieder zurückgesetzt wird.Beispielif (IPS_SemaphoreEnter("KritischerPunkt", 1000)){// ...Kritische Befehle ausführen//Semaphore wieder freigeben!IPS_SemaphoreLeave("KritischerPunkt");}else{// ...Keine ausführung Möglich. Ein anderes Skript nutzt den "KritischenPunkt"// für länger als 1 Sekunde, sodass unsere Wartezeit überschritten wird.}

IPS_SemaphoreLeaveboolean IPS_SemaphoreLeave ( string $Name )ParameterlisteNameName, der die Semaphore beschreibt.RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDieser Befehl löscht das zuvor mit IPS_SemaphoreEnter gesetzte Semaphor wieder.Beispiel//Siehe IPS_SemaphoreEnter()

<strong>IP</strong>S_SemaphoreEnterboolean <strong>IP</strong>S_SemaphoreEnter ( string $Name , integer $Wartezeit )ParameterlisteNameWartezeitName, der die Semaphore beschreibtMillisekunden, die gewartet wird, bis der Befehl abbrichtRückgabewerteTRUE, wenn die Semaphore betreten wurde. FALSE, wenn die Semaphore vor Ablauf der Wartezeit nicht betretenwerden konnteBeschreibungDieser Befehl setzt ein Semaphor (ein Zeichen mit Signalwirkung), das dazu verwendet werden kann, den Start andererSkripte zu verhindern. Ein Skript kann sich so vor konkurrierenden anderen Skripten schützen und natürlich auch voranderen Instanzen von sich selbst.Der Befehl versucht, das Semaphor mit dem Namen SemaphorName zu setzen. Existiert das Semaphor bereits, wird dieAbarbeitung des Skripts für die Zeitdauer Wartezeit (in Millisekunden) ausgesetz. Danach wird noch ein weitererVersuch unternommen.In <strong>IP</strong>-<strong>Symcon</strong> können grundsätzlich mehrere Skripte gleichzeitig laufen. Solange ein Skript keinen exklusiven Zugriff aufVariablen oder System-Ressourcen benötigt, stellt dieser Fall kein Problem dar. Falls aber ein exklusiver Zugriffunumgänglich ist, kann mit dem Befehl ein Semaphor gesetzt werden. Der Befehl prüft zuerst, ob das Semaphor mit demangegebenen Namen bereits gesetzt ist. Existiert es noch nicht, wird es durch den Befehl gesetzt und liefert TRUE alsRückmeldung. Alle anderen Skripte, die danach versuchen das selbe Semaphor zu setzen, müssen eine Warteschleife derDauer Wartezeit durchlaufen. Nach Ablauf der Wartezeit versucht der Befehl erneut das Semaphor zu setzen. Ist er dabeierfolgreich, wird TRUE zurückgemeldet, andernfalls FALSE. Wenn man gewährleisten will, dass während der Laufzeiteines Skripts die von ihm verwendeten Daten nicht von anderen, gleichzeitig laufenden Skripten verfälscht werden, kannman diesen Befehl verwenden, um sich exklusiven Zugriff zu sichern.Bei der Verwendung dieses Befehls ist darauf zu achten, dass das Semaphor möglichst bald wieder zurückgesetzt wird.Beispielif (<strong>IP</strong>S_SemaphoreEnter("KritischerPunkt", 1000)){// ...Kritische Befehle ausführen//Semaphore wieder freigeben!<strong>IP</strong>S_SemaphoreLeave("KritischerPunkt");}else{// ...Keine ausführung Möglich. Ein anderes Skript nutzt den "KritischenPunkt"// für länger als 1 Sekunde, sodass unsere Wartezeit überschritten wird.}

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!