Описание

#include <sys\sem.h>

int semget(key_t key, int nsems, int permflags);

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

Значение, возвращаемое в результате успешного вызова semget, является идентификатором набора семафоров (semaphore set identifier), который ведет себя

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

почти так же, как идентификатор очереди сообщений. Идентификатор набора семафоров обозначен на рис. 4.1 как semid. Следуя обычной практике языка С, ин­декс семафора в наборе может принимать значения от 0 до nsems-1.

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

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: