php/doc-en

sem_get add warning about freeing variable

Offen

#3.612 geöffnet am 25.07.2024

 (1 Kommentar) (0 Reaktionen) (0 zugewiesene Personen)XML (882 Forks)auto 404
enhancementgood first issue

Repository-Metriken

Stars
 (596 Sterne)
PR-Merge-Metriken
 (Durchschn. Merge 99T 23h) (90 gemergte PRs in 30 T)

Beschreibung

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.

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) acquired

var_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

Contributor Guide