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