Итак, если у меня есть набор семафоров semid
с семафорами num_of_sems
и сембуфером *deleter_searchers_down
struct sembuf *deleter_searchers_down
= malloc(sizeof (*deleter_searchers_down) * num_of_sems);
for (i = 0; i < num_of_sems; ++i) {
(deleter_searchers_down + i)->sem_op = -1;
(deleter_searchers_down + i)->sem_num = i;
(deleter_searchers_down + i)->sem_flg = SEM_UNDO;
}
semop(semid, deleter_searchers_down, num_of_sems);
Вызов semop попытается понизить все семафоры в наборе сразу или заблокирует один раз он пытается понизить значение первого семафора, равного 0, и продолжать работу после того, как какой-либо другой процесс активирует этот конкретный семафор?