TrySemaphore()

Syntaxe

Resultat = TrySemaphore(Semaphore)
Description
Diminue la valeur du compteur interne du sémaphore de un seulement si le compteur est supérieur à zéro. Cette commande a le même comportement que WaitSemaphore(), sauf qu'elle ne bloquera pas si le compteur devait tomber en dessous de zéro.

Arguments

Semaphore Le sémaphore à utiliser.

Valeur de retour

Renvoie une valeur non nulle si le compteur du sémaphore a été diminué, ou zéro si le compteur n'a pas pu être diminué (il était déjà à zéro).

Exemple

Global ThreadSemaphore = CreateSemaphore()

Procedure MyThread(val)
  
  Debug "Thread ok"
  Repeat
    Debug "Thread En cours"
    Debug "Pour quitter, revenir sur la console et appuyer sur 'Echap'"
    ShowDebugOutput()
    ClearDebugOutput()
    Delay(2000)
    For i = 1 To 5
      Debug x
      x + 1
    Next i
    Delay(1000)
  Until TrySemaphore(ThreadSemaphore)
  Debug "Thread Fermé"
  
EndProcedure

Thread = CreateThread(@MyThread(), 0)


If OpenConsole()
  PrintN("Appuyez sur une touche SVP.")
  PrintN("Appuyez sur [Echap] pour quitter")
  
  Repeat
    KeyPressed$ = Inkey()
    
    If KeyPressed$ <> ""
      
      PrintN("Vous avez appuye sur : " + KeyPressed$)
      PrintN("Son identifiant numerique est : "+Str(RawKey()))
      
    ElseIf RawKey()
      
      PrintN("Vous avez appuye sur une touche qui n'est pas alpha-numerique.")
      PrintN("Son identifiant numerique est : "+Str(RawKey()))
      
    Else
      Delay(20) ; Evite de monopoliser tout le temps processeur. Utile pour un OS multi-tâches.
    EndIf
    
  Until KeyPressed$ = Chr(27) ; Attends jusqu'à ce que la touche [Echap] soit appuyée
EndIf

If IsThread(Thread)
  SignalSemaphore(ThreadSemaphore)
EndIf
End

Voir aussi

WaitSemaphore(), SignalSemaphore()

OS Supportés

Tous

<- TryLockMutex() - Thread Index - UnlockMutex() ->