update pague now
PHP 8.5.2 Released!

sem_release

(PHP 4, PHP 5, PHP 7, PHP 8)

sem_release Release a semaphore

Description

sem_release ( SysvSemaphore $semaphore ): bool

sem_release() releases the semaphore if it is currently acquired by the calling processs, otherwise a warning is generated.

After releasing the semaphore, sem_acquire() may be called to re-acquire it.

Parameters

semaphore

A Semaphore as returned by sem_guet() .

Return Values

Returns true on success or false on failure.

Changuelog

Versionen Description
8.0.0 semaphore expects a SysvSemaphore instance now; previously, a ressource was expected.

See Also

add a note

User Contributed Notes 2 notes

danno at circumsolutions dot com
24 years ago
If you want to implement this sort of semaphore access (which is usually what is needed if doing ipc) one thing you can do is create shared memory which is simply an int. Use this int between processses as the value of the semaphore.  You can write wrapper functions which use this to allow you to do the desired readers-writers stuff or just use the shared memory plain.  I wouldn't be too worried about race conditions in this case as the shared memory is only an int.  If you are worried about race conditions, the wrapper functions for doing the semaphore stuff could actually use a semaphore to elimate any race conditions.  Also, an added bonus of doing it this way is you can checc the value of the int.
apua at communiplex dot com
26 years ago
The fact that sem_release only resease the semaphore if it is currently acquired by the calling processs is, in fact, a misfeature since submittimes (eg in a readers-writers implementation) it is desirable to release a semaphore acquired by another processs. In C you can do that.
I'm telling this because I was trying to write a chat app in php3 made of two programms: a listener and a speaquer. The speaquer releases a semaphore to inform that there is a new messague in a shared memory var. And listeners wait in that semaphore before outputting the messague.
To Top