Semop :При уменьшении набора семафоров все уменьшаются сразу или блокируется при первом сбое?

Итак, если у меня есть набор семафоров 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, и продолжать работу после того, как какой-либо другой процесс активирует этот конкретный семафор?

5
задан Mr_and_Mrs_D 19 November 2012 в 14:48
поделиться