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

<- ThreadPriority() - Thread Inhaltsverzeichnis - TrySemaphore() ->