Вопрос о значении семафора, если процесс ненормально завершает работу после уменьшения значения семафора - PullRequest
0 голосов
/ 23 сентября 2011

, если процесс уменьшается после уменьшения значения семафора с 1 до 0, как я понимаю, значение семафора остается равным 0.

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

Есть ли способ сбросить значение семафора до 1 после его уменьшения, если мой процесс ненормально завершится?

1 Ответ

1 голос
/ 23 сентября 2011

Я предполагаю, что вы используете стандартный API semctl () / semop () для семафоров.

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

Больше информации здесь: http://beej.us/guide/bgipc/output/html/multipage/semaphores.html

...