因此,如果我有一个带有信号量和sembuf的信号量集 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 并在其他进程提升该特定信号量后继续,它会阻塞吗?