为什么在解决生产者 - 消费者的有界缓冲实例时需要两个信号量和一个互斥量?

时间:2016-11-30 10:02:22

标签: mutex semaphore producer-consumer

为什么在生产者消费者问题中使用有界缓冲区时,除了信号量之外还必须使用互斥量?

1 个答案:

答案 0 :(得分:0)

empty:semaphore(n)
full: semaphore(0)
mutex: semaphore(1)

"互斥"用于锁定缓冲区。

"全"如果缓冲区为空,则用于阻止使用者。

"空"如果缓冲区已满,则用于阻止生成器。

这就是你需要3个信号量的原因。

您可以轻松地对代码进行谷歌搜索,因此我不会将其粘贴到此处。