next up previous contents
Next: Управление семафорами через semctl Up: Семафоры Previous: Структуры данных семафоров   Contents

Создание множеств семафоров

Для создания множества семафоров служит системный вызов semget. Синтаксис данного системного вызова:

#include <sys/types.h>

#include <sys/ipc.h>

#include <sys/sem.h>

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

Целочисленное значение, возвращаемое в случае успешного завершения, есть идентификатор множества семафоров (semid). В случае неудачи результат равен -1.

Смысл аргументов key и semflg тот же, что и у соответствующих аргументов системного вызова msgget. Аргумент nsems задает число семафоров в множестве. Если запрашивается идентификатор существующего множества, значение nsems не должно превосходить числа семафоров в множестве.

Превышение системных параметров SEMMNI, SEMMNS и SEMMSL при попытке создать новое множество всегда ведет к неудачному завершению. Системный параметр SEMMNI определяет максимально допустимое число уникальных идентификаторов множеств семафоров в системе. Системный параметр SEMMNS определяет максимальное общее число семафоров в системе. Системный параметр SEMMSL определяет максимально допустимое число семафоров в одном множестве.



2004-06-22