TRYLOCK(param
)
Mit dieser Funktion ist es möglich, einige Passagen des
Rufnummernplans zu serialisieren. Die Funktion ist
LOCK()
sehr ähnlich. Der einzige Unterschied besteht
darin, das nicht 3 Sekunden gewartet wird, wenn der Mutex schon gesperrt
ist. Das heißt, dass immer nur ein Anrufer nach dem anderen das mit dem
LOCK-Mechanismus "gesicherte" Stück Rufnummernplan durchlaufen kann. Diese
Technologie ist aus der Threadprogrammierung auch in Form eines
Mutex bekannt. Als Parameter muss der frei wählbare Name des
Mutexes übergeben werden. Wenn der Mutex normal gelockt werden konnte,
liefert die Funktion 1
zurück. Der Mutex ist wieder frei, wenn
der Channel aufgelegt wurde oder UNLOCK()
aufgerufen
wurde.; Sperre das Ausführen eines Systembefehls durch einen Mutex exten => 123,1,GotoIf(${TRYLOCK(lock1)}?locked,1) exten => 123,n,System(kritisches-skript.sh) exten => 123,n,Hangup() exten => locked,1,Verbose(1, Der Mutex ist schon gelockt)
Asterisk-Versionen:
| | | | | 1.6 |————————
Interner Hilfetext zu dieser Funktion in Asterisk 1.6:
-= Info about function 'TRYLOCK' =-
[Syntax]
TRYLOCK(<lockname>)
[Synopsis]
Attempt to obtain a named mutex
[Description]
Attempts to grab a named lock exclusively, and prevents other channels
from obtaining the same lock. Returns 1 if the lock was available or 0
otherwise.