Системное программирование в UNIX средствами Free Pascal


       Современные литиевые батареи с заданными параметрами. |   

Описание


uses ipc;

Function semget(key:Tkey; nsems:longint; permflags:longint):longint;

Вызов semget аналогичен вызову msgget. Дополнительный параметр nsems задает требуемое число семафоров в наборе семафоров; это важный момент – семафорные операции в

System V IPC приспособлены для работы с наборами семафоров, а не с отдельными объектами семафоров. На рис. 8.2 показан набор семафоров. Ниже увидим, что использование целого набора семафоров усложняет интерфейс процедур работы с семафорами.

Индекс 0

Индекс 1

Индекс 2

Индекс 3

semid

semval = 2

semval = 4

semval = 1

semval = 3

nsems=4

Рис.8.2. Набор семафоров

Значение, возвращаемое в результате успешного вызова semget, является идентификатором набора семафоров (semaphore set identifier), который ведет себя почти так же, как идентификатор очереди сообщений. Идентификатор набора семафоров обозначен на рис. 8.2 как semid. Следуя обычной практике, индекс семафора в наборе может принимать значения от 0 до nsems-1.

С каждым семафором в наборе связаны следующие значения:

semval        Значение семафора, положительное целое число. Устанавливается при помощи системных вызовов работы с семафорами, то есть к значениям семафоров нельзя получить прямой доступ из программы, как к другим объектам данных

sempid        Идентификатор процесса, который последним работал с семафором

semcnt        Число процессов, ожидающих увеличения значения семафора

semzcnt      Число процессов, ожидающих обнуления значения семафора




Содержание  Назад  Вперед