Мониторинг обменных курсов валют
18c0693f

Семафоры


Обобщение классического механизма семафоров общего
вида Диекстры
Целесообразность обобщения сомнительна
Обычно использовался облегченный вариант двоичных семафоров
Известен алгоритм реализации семафоров общего вида на основе двоичных
Семафор в ОС UNIX:

Три системных вызова:


id = semget(key, count,
flag);

oldval = semop(id, oplist,
count);

Элемент массива oplist:

Если проверка прав доступа проходит нормально

Значение поля операции положительно

Значение поля операции равно нулю

Значение поля операции отрицательно
(1) его абсолютное значение меньше или равно значению
семафора

(2) значение семафора меньше абсолютной величины
поля операции

Стремление добиться возможности избегать тупиковых
ситуаций
Системный вызов semop
выполняется как атомарная операция
Флаг IPC_NOWAIT заставляет
ядро ОС UNIX не блокировать текущий процесс

semctl(id, number, cmd,
arg);

Можно уничтожить индивидуальный семафор в указанной
группе





Самый выгодный курс обмена валюты