LOCK(String
)
Mit dieser Funktion können Sie einige Passagen des Rufnummernplans
serialisieren. 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 schon blockiert ist, dann wartet
die Funktion max. 3 Sekunden und liefert danach 0
zurück. 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(${LOCK(lock1)}?locked,1) exten => 123,n,System(kritisches-skript.sh) exten => 123,n,Hangup() exten => locked,1,Playback(mutex-ist-gelockt-bitte-warten) exten => locked,n,Goto(,123,1)
Asterisk-Versionen:
| | | | | 1.6 |————————
Interner Hilfetext zu dieser Funktion in Asterisk 1.6:
-= Info about function 'LOCK' =- [Syntax] LOCK(<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. LOCK will wait for the lock to become available. Returns 1 if the lock was obtained or 0 on error. Note: to avoid the possibility of a deadlock, LOCK will only attempt to obtain the lock for 3 seconds if the channel already has another lock.
Differenz des internen Hilfetexts von Asterisk 1.4 zu 1.6: — in Asterisk 1.4 nicht vorhanden —
Siehe auch. Abschnitt 106, „UNLOCK()
“, Abschnitt 104, „TRYLOCK()
“
AMOOCON 2010
Noch kein Ticket? Dann wird es Zeit. Nur noch wenige Tage.
- Infos unter www.amoocon.de.
- twitter.com/AMOOCON