TryLockMutex()
Syntax
Ergebnis = TryLockMutex(Mutex)Beschreibung
Versucht, den angegebenen Mutex zu sperren ("lock").
Anders als LockMutex() stoppt dieser Befehl nicht die Ausführung bis der Mutex verfügbar ist. Er kehrt umgehend zurück und sein Rückgabewert zeigt an, ob das Sperren erfolgreich war oder nicht. Dies ist nützlich in Situationen, wo der Thread nicht auf die Verfügbarkeit des Mutex warten soll und stattdessen andere Dinge in der Zwischenzeit erledigen soll.
Parameter
Mutex Der zu sperrende Mutex.
Rückgabewert
Ein Wert ungleich Null, wenn der Mutex erfolgreich gesperrt wurde. Anderenfalls Null, wenn das Sperren fehlgeschlagen ist.
Anmerkungen
Wenn das Sperren erfolgreich war, muss der UnlockMutex() Befehl aufgerufen werden, um den Mutex für andere Threads erneut verfügbar zu machen. Wenn dies unterbleibt, kann dies leicht zu einer "Lockup"-Situation (Sperrung innerhalb des Programms) führen.
Beispiel
Procedure ThreadProcedure(*Value) Shared Mutex Repeat If TryLockMutex(Mutex) PrintN("Mutex erfolgreich gesperrt.") UnlockMutex(Mutex) Break ; Schleife und Thread verlassen Else PrintN("Warte noch auf Mutex Zugriff...") Delay(200) EndIf ForEver EndProcedure OpenConsole() Mutex = CreateMutex() LockMutex(Mutex) ; Hauptprogramm hat den Mutex zuerst gesperrt Thread = CreateThread(@ThreadProcedure(), 0) Delay(4000) UnlockMutex(Mutex) ; jetzt geben wir den Mutex frei, womit der Thread ihn bekommen kann Input()
Siehe auch
UnlockMutex()
Unterstützte OS
Alle