【发布时间】:2017-03-30 18:26:39
【问题描述】:
考虑下面给出的代码 sn-p:
#include <pthread.h>
#include <semaphore.h>
sem_t empty;
sem_t full;
sem_t mutex;
int main(int argc, char *argv[])
{
int MAX = 10;//Size of the Buffer
sem_init(&empty, 0, MAX);
sem_init(&full, 0, 0);
sem_init(&mutex, 0, 1);
return 0;
}
只有必需的代码,我上面已经提到了。它是生产者-消费者代码的一部分。 sem_init()中各个参数的含义是什么?我可以看出第一个参数是信号量变量的地址,第三个是它的值。
为什么第二个参数总是0?这是什么意思?
我们是否使用第二个参数指定信号量等待的临界值?
wait(S) {
while (S <= 0 )
; // busy wait
S--;
}
如果我将 3 作为第二个参数传递给 sem_init(),是否将 wait(S) 中的 while 循环更改为
while (S <= 3 )
喜欢这样吗?
【问题讨论】:
-
请阅读手册页。更好的是这里的解释,并且将是完整的
标签: c operating-system mutex semaphore producer-consumer