Да, sem_t может принимать значение больше 1. Вы можете использовать sem_init
, чтобы инициализировать ваш семафор в произвольное значение. Цитирование эта ссылка :
Чтобы инициализировать семафор, используйте
sem_init ():
int sem_init(sem_t *sem, int pshared, unsigned int value);
- sem указывает на объект семафора
инициализировать
- pshared - это флаг
указывая, является ли
Семафор должен быть доступен для
процессы fork (). LinuxThreads делает
в настоящее время не поддерживаются
семафоры
- значение является начальным значением
установить семафор на
Пример
Применение:
sem_init(&sem_name, 0, 10);
Я не знаю ни одной функции, которая может увеличивать sem_t на произвольное значение.