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

时间:2015-03-16 18:23:19

标签: c semaphore

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

  1. sem_init(&randomsem,0,1)
  2. sem_init(&randomsem,0,0)
  3. 现在,

    sem_wait(&randomsem)会在两种情况下都有效吗

    仅适用于sem_init(&randomsem,0,1),因为当大于0 时使用sem_wait(&randomsem)会递减值参数,因此无效如果我的信号量初始化为sem_init(&randomsem,0,0) ??

    哪种说法是正确的?请帮忙!

1 个答案:

答案 0 :(得分:0)

int sem_init(sem_t *sem, int pshared, unsigned int value);

sem_init初始化sem指向的信号量对象。与信号量相关联的计数最初设置为值。 pshared参数指示信号量是当前进程的本地信号(pshared为零)还是要在多个进程之间共享(pshared不为零)。

第三个参数value设置信号量的初始值。因此,在第一种情况下,您的信号量以值1开始,在第二次转换中为0;