假设我以两种不同的方式初始化信号量
sem_init(&randomsem,0,1)
sem_init(&randomsem,0,0)
现在,
sem_wait(&randomsem)
会在两种情况下都有效吗
或
仅适用于sem_init(&randomsem,0,1)
,因为当大于0 时使用sem_wait(&randomsem)
会递减值参数,因此无效如果我的信号量初始化为sem_init(&randomsem,0,0)
??
哪种说法是正确的?请帮忙!
答案 0 :(得分:0)
int sem_init(sem_t *sem, int pshared, unsigned int value);
sem_init初始化sem指向的信号量对象。与信号量相关联的计数最初设置为值。 pshared参数指示信号量是当前进程的本地信号(pshared为零)还是要在多个进程之间共享(pshared不为零)。
第三个参数value设置信号量的初始值。因此,在第一种情况下,您的信号量以值1开始,在第二次转换中为0;