[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 op - основные сведения

Системные  вызовы   семейства  op,   кроме  shmdt(2),  используют  id,
полученный ранее от get.

Для операций  над семафорами и очередями сообщений, по умолчанию, если
операция была  неудачной, процесс приостанавливается, пока сохраняется
условие блокировки. Это похоже на поведение по умолчанию при чтении из
пустого  программного   канала  или  при  записи  в  заполненный.  При
использовании  shmop(2)   блокировки  не   происходит.  При  работе  с
очередями сообщений  блокировка происходит,  если  посылающий  процесс
(msgsnd(2))  обнаружил,   что  очередь   заполнена,   или   получатель
(msgrcv(2))  -  что  в  очереди  нет  сообщений  запрашиваемого  типа.
Операции над семафорами включают прибавление к и вычитание целых чисел
из значения  семафора, с  условием что  это значение  не  может  стать
отрицательным.  Операции   над  семафорами  вызовут  блокировку,  если
процесс пытается  сделать значение  семафора меньше  нуля. Кроме того,
процесс может ждать, пока это значение не    станет нулевым.

Блокировка снимается при одном из следующих условий:
 . Операция успешна
 . Процесс получил сигнал
 . Средство IPC было удалено
Операции  могут   быть  сделаны   неблокирующимися,  т.е.   немедленно
возвращающими -1,  если требуемая  операция не  удалась. Для  этого  в
слово flg  должна быть включена побитовым ИЛИ константа IPC_NOWAIT (из
<sys/ipc.h>).
                        op - ОСНОВНЫЕ СВЕДЕНИЯ
.    по умолчанию операции над семафорами и очередями сообщения
блокируются при неудаче.
     процесс приостанавливается до:
     -    успеха
     -    получения сигнала
     -    удаления средства IPC
.    IPC_NOWAIT - флаг неблокирующейся операции (по умолчанию
отсутствует)