sem_release() releases the semaphore if it is currently acquired by the calling process, otherwise a warning is generated.
Returns TRUE on success or FALSE on failure.
After releasing the semaphore, sem_acquire() may be called to re-acquire it.
See also sem_get() and sem_acquire().
Note: This function does not work on Windows systems.