UDF > WinAPIEx > Processes & Synchronization > Synchronization >


_WinAPI_ReleaseSemaphore

Augmente le compteur de l'objet Semaphore sp�cifi� d'une valeur donn�e

#include <WinAPIProc.au3>
_WinAPI_ReleaseSemaphore ( $hSemaphore [, $iIncrease = 1] )

Param�tres

$hSemaphore Handle de l'objet Semaphore. La fonction _WinAPI_CreateSemaphore() or _WinAPI_OpenSemaphore() retourne ce handle.
$iIncrease [optionnel] La valeur par laquelle le compteur actuel de l'objet Semaphore doit �tre augment�e. La valeur doit �tre sup�rieure � z�ro. Si la valeur indiqu�e provoquerait le d�passement du nombre maximum sp�cifi� lors de la cr�ation du s�maphore, le compteur ne serait pas modifi� et la fonction retournerait 0. La valeur de ce param�tre par d�faut est 1.

Valeur de retour

Succ�s: Retourne la valeur pr�c�dente du compteur du s�maphore.
�chec: D�finit @error <> 0, appelez _WinAPI_GetLastError() pour obtenir des informations suppl�mentaires sur l'erreur.

Remarque

L'�tat d'un objet s�maphore est signal� lorsque son compteur est sup�rieur � z�ro et non signal� quand son compteur est �gal � z�ro. Le processus qui appelle la fonction _WinAPI_CreateSemaphore() sp�cifie la valeur initiale du compteur du s�maphore. Chaque fois qu'un processus d'attente est lib�r� en raison de l'�tat ​​signal� du s�maphore, le compteur du s�maphore est diminu�e de un.

En relation

_WinAPI_CreateSemaphore, _WinAPI_OpenSemaphore

Voir aussi

Consultez ReleaseSemaphore dans la librairie MSDN.

Exemple

#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIHObj.au3>
#include <WinAPIProc.au3>

If Not @Compiled Then
    MsgBox($MB_SYSTEMMODAL, '', 'Pour ex�uter ce script, vous devez premi�rement le compiler, puis ensuite ex�cuter le fichier (.exe).')
    Exit
EndIf

Local $hSemaphore = _WinAPI_CreateSemaphore('MySemaphore', 2, 2)

_WinAPI_WaitForSingleObject($hSemaphore)
_MyGUI()
_WinAPI_ReleaseSemaphore($hSemaphore)
_WinAPI_CloseHandle($hSemaphore)

Func _MyGUI()
    GUICreate('Test ' & StringReplace(@ScriptName, '.au3', '()'))
    GUISetState(@SW_SHOW)
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc   ;==>_MyGUI