c - c 中 sem_init(...) 中 value 参数的不同用法

标签 c semaphore

假设我用两种不同的方式初始化信号量

  1. sem_init(&randomsem,0,1)
  2. 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/

相关文章:

c - 指向二维数组元素的指针。我怎样才能将它传递给函数?

ios - 在不知道它们是 IPv4 还是 IPv6 的情况下预创建套接字

c - sem_wait 未使用 EINTR 解锁

stack-overflow - 在 FreeRTOS 中从 ISR 提供​​信号量后堆栈溢出

c++ - 提高生产者消费者的并发性

c - 在 exec* 函数族之后执行代码

c++ - 如何检查是否使用 malloc 或 new 分配了内存

c - snprintf() 不适用于就地修改字符串

java - 同步块(synchronized block): lock many objects?

c - posix信号量问题