TryLockMutex()

Syntaxe

Resultat = TryLockMutex(Mutex)
Description
Essaie de verrouiller un Mutex.

Contrairement à LockMutex(), cette commande ne stoppe pas l'exécution du thread jusqu'à ce que le mutex soit libre. Ceci peut être pratique dans une situation ou le thread peut continuer à faire autre chose en attendant que le mutex soit libéré.

Arguments

Mutex Le mutex à verrouiller.

Valeur de retour

Renvoie une valeur non nulle si le mutex a été verrouillé, zéro sinon.

Remarques

Si le mutex a été verrouillé, la commande UnlockMutex() doit être appelée pour libérer le mutex une fois que les accès aux ressources partagées sont terminés. Ne pas le faire peut engendrer facilement des situations de blocage.

Exemple

 Procedure ThreadProcedure(*Valeur)
    Shared Mutex
   
    Repeat
      If TryLockMutex(Mutex)
        PrintN("Mutex verrouille avec succes.")
        
        UnlockMutex(Mutex)
        Break ; quitte la boucle et le thread
      Else
        PrintN("Toujours en train d'attendre d'avoir accès au mutex...")
        Delay(200)
      EndIf
    ForEver  
  EndProcedure
  
  OpenConsole()
  
  Mutex = CreateMutex()
  LockMutex(Mutex) ; le programme principal verrouille en premier le mutex
  Thread = CreateThread(@ThreadProcedure(), 0)
  
  Delay(4000)
  UnlockMutex(Mutex) ; maintenant déverrouille le mutex, pour que le thread puisse y accéder
  
  Input()

Voir aussi

UnlockMutex(), LockMutex(), CreateMutex()

OS Supportés

Tous

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