его абсолютное значение меньше или
ожидания (усыпляется)
Значение поля операции отрицательно
(1) его абсолютное значение меньше или равно значению
семафора
- это отрицательное значение прибавляется к значению
семафора
- если значение семафора стало нулевым, то ядро
активизирует все процессы, ожидающие нулевого значения этого семафора
(2) значение семафора меньше абсолютной величины
поля операции
- число процессов, ожидающих увеличения значения
семафора увеличивается на единицу
- текущий процесс откладывается
Стремление добиться возможности избегать тупиковых
ситуаций
Системный вызов semop
выполняется как атомарная операция
Флаг IPC_NOWAIT заставляет
ядро ОС UNIX не блокировать текущий процесс
- лишь сообщать в ответных параметрах о возникновении
ситуации, приведшей бы к блокированию процесса
semctl(id, number, cmd,
arg);
- id
- это дескриптор группы семафоров
- number
- номер семафора в группе
- cmd
- код операции
- arg - указатель
на структуру, содержимое которой интерпретируется в зависимости
от операции
Можно уничтожить индивидуальный семафор в указанной
группе