ReleaseSemaphore
The ReleaseSemaphore
function increases the count of the specified semaphore object by a specified
amount.
BOOL ReleaseSemaphore(
HANDLE hSemaphore, |
// handle of the
semaphore object |
LONG lReleaseCount, |
// amount to add to
current count |
LPLONG lpPreviousCount |
// address of
previous count |
); |
|
Parameters
hSemaphore
Identifies
the semaphore object. The CreateSemaphore
Windows
NT: This handle must have
SEMAPHORE_MODIFY_STATE access. For more information, see Interprocess
Synchronization Objects
lReleaseCount
Specifies 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 FALSE.
lpPreviousCount
Points to a
32-bit variable to receive the previous count for the semaphore. This parameter
can be NULL if the previous count is not required.
Return Values
If the
function succeeds, the return value is nonzero.
If the
function fails, the return value is zero. To get extended error information,
call GetLastError
Remarks
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 CreateSemaphore
Typically, an
application uses a semaphore to limit the number of threads using a resource.
Before a thread uses the resource, it specifies the semaphore handle in a call
to one of the wait functions
Another use
of ReleaseSemaphore is during an application s initialization. The
application can create a semaphore with an initial count of zero. This sets the
semaphore s state to nonsignaled and blocks all threads from accessing the
protected resource. When the application finishes its initialization, it uses ReleaseSemaphore
to increase the count to its maximum value, to permit normal access to the
protected resource.
See Also