Можно ли инициализировать семафор несколько раз? - PullRequest
1 голос
/ 04 августа 2011

Можно ли инициализировать семафор любое количество раз в программе после использования, чтобы его можно было использовать снова.

Спасибо

Ответы [ 3 ]

3 голосов
/ 04 августа 2011

Вы можете уничтожить и повторно инициализировать семафор POSIX, если на нем нет потоков, ожидающих его, и нет никакой возможности, что другой поток может попытаться использовать его в течение интервала, в течение которого он недопустим (уничтожен).Тем не менее, я подозреваю, что мотивация для этого исходит из неправильного понимания того, что вы пытаетесь достичь ...

1 голос
/ 04 августа 2011

Если вы спрашиваете семафор POSIX , который вы задали здесь , просто выполните sem_post / sem_wait - вам не нужно их инициализировать снова.

Если вы должны это сделать (например, хотите отменить текущее значение), сначала уничтожьте его.

0 голосов
/ 04 августа 2011

Если вы освободили память и сначала уничтожили ее, обязательно.

...