Increases the count of the specified semaphore object by a specified amount
#include <WinAPIProc.au3>
_WinAPI_ReleaseSemaphore ( $hSemaphore [, $iIncrease = 1] )
$hSemaphore | Handle to the semaphore object. The _WinAPI_CreateSemaphore() or _WinAPI_OpenSemaphore() function returns this handle. |
$iIncrease | [optional] The amount by which the semaphore object's current count is to be increased. The value must be greater than zero. If the specified amount would cause the semaphore's count to exceed the maximum count that was specified when the semaphore was created, the count is not changed and the function returns 0. Default is 1. |
Success: | The previous count for the semaphore. |
Failure: | Sets the @error flag to non-zero, call _WinAPI_GetLastError() to et extendd error information. |
The state of a semaphore object is signaled when its count is greater than zero and nonsignaled when its count
is equal to zero. The process that calls the _WinAPI_CreateSemaphore() function specifies the semaphore's initial
count. Each time a waiting process is released because of the semaphore's signaled state, the count of the
semaphore is decreased by one.
_WinAPI_CreateSemaphore, _WinAPI_OpenSemaphore
Search ReleaseSemaphore in MSDN Library.
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIHObj.au3>
#include <WinAPIProc.au3>
If Not @Compiled Then
MsgBox($MB_SYSTEMMODAL, '', 'To run this script, you must first compile it and then run the (.exe) file.')
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)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
EndFunc ;==>_MyGUI