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