Function DE Version 4.60

@RequestMutexSemaphore

Misc System Text

Syntax

@RequestMutexSemaphore(MUTEXSEMAPHOREHANDLE);
@RequestMutexSemaphore(MUTEXSEMAPHOREHANDLE;FNTIMEOUT);

Beschreibung

Verlangt und belegt (im Erfolgsfall) die Mutex-Semaphore mit dem Mutex-Semaphore-Handle (MSH) MUTEXSEMAPHOREHANDLE.
Im Erfolgsfall wird @True zurückgegeben, andernfalls @ERROR.

Wird FN FNTIMEOUT mit angegeben wird nach FN FNTIMEOUT Millisekunden das warten auf die Mutex-Semaphore abgebrochen.
In diesem Fall wird @ERROR zurückgegeben.
Wird FN FNTIMEOUT nicht angegeben (bzw. -1 für FN FNTIMEOUT) wird solange gewartet, bis die Mutex-Semaphore zur Verfügung steht.

Eine Mutex-Semaphore kann nur von einem Task zu einem Zeitpunkt besessen (requested) werden.
(Dies dient dazu bestimmte Teile eines Scripts exklusiv nur von einem Task zu einem Zeitpunkt ausführen zu lassen.)

z.B. Zugriff auf eine GLOBALE Zählervariable die kontinuierlich, von mehreren Tasks, hochgezählt werden soll.

Beispiel: @RequestMutexSemaphore(MUTEXSEMAPHOREHANDLE);

TEXTSEMAPHORENAME:="TEST_SEMAPHORE_NAME";

MSH:=@CreateMutexSemaphore(TEXTSEMAPHORENAME);
@RequestMutexSemaphore(MSH);

@ReleaseMutexSemaphore(MSH);
MSH:=@CloseMutexSemaphore(MSH);

Es wird eine Mutex-Semaphore mit Namen "TEST_SEMAPHORE_NAME" erzeugt, requested (verlangt und belegt), released (freigegeben) und wieder geschlossen.