You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
sem_get() has an important gotcha where if the variable is freed then the semaphore is released. I propose this is not quite a bug but could do with a red warning box e.g.
Warning: sem_get will also auto_release the semaphore when the variable which holds it is freed (rather than the process ending). Ensure you store the result in a variable which is not overwritten, unset, or goes out of scope while the semaphore should be alive.
This behaviour can be demonstrated with the following:
$semGet = sem_get(1);
var_dump(sem_acquire($semGet, true));
// true: semaphore(1) acquiredvar_dump(sem_acquire(sem_get(1), true));
// false: semaphore(1) already acquired
unset($semGet);
var_dump(sem_acquire(sem_get(1), true));
// true: semaphore(1) released by variable unset() so can be acquired again
The text was updated successfully, but these errors were encountered:
I would presume that this changed when the resources were converted to objects; might make sense to add that info to the note (or maybe to the changelog entry).
From manual page: https://php.net/function.sem-get
sem_get()
has an important gotcha where if the variable is freed then the semaphore is released. I propose this is not quite a bug but could do with a red warning box e.g.This behaviour can be demonstrated with the following:
The text was updated successfully, but these errors were encountered: