假设我用两种不同的方式初始化信号量
sem_init(&randomsem,0,1)
sem_init(&randomsem,0,0)
现在,
sem_wait(&randomsem)
在这两种情况下都有效
或
它是否仅适用于 sem_init(&randomsem,0,1)
,因为使用 sem_wait(&randomsem)
会减少值参数 大于 0,因此如果我的信号量初始化为 sem_init(&randomsem,0,0)
??
哪种说法是正确的?请帮忙!
最佳答案
int sem_init(sem_t *sem, int pshared, unsigned int value);
sem_init初始化sem指向的信号量对象。与信号量关联的计数最初被设置为值。 pshared 参数指示信号量是当前进程的本地信号量(pshared 为零)还是在多个进程之间共享(pshared 不为零)。
第三个参数value,设置信号量的初始值。因此,在第一种情况下,信号量以值 1 开头,在第二种情况下为 0;
关于c - c 中 sem_init(...) 中 value 参数的不同用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29084224/