【发布时间】:2016-11-30 10:02:22
【问题描述】:
在生产者消费者问题中使用有界缓冲区时,为什么除了信号量之外还必须使用互斥锁?
【问题讨论】:
标签: mutex semaphore producer-consumer
在生产者消费者问题中使用有界缓冲区时,为什么除了信号量之外还必须使用互斥锁?
【问题讨论】:
标签: mutex semaphore producer-consumer
empty:semaphore(n)
full: semaphore(0)
mutex: semaphore(1)
“mutex”用于锁定Buffer。
"full" 用于在缓冲区为空时阻塞消费者。
"empty" 用于在缓冲区满时阻塞生产者。
这就是您需要 3 个信号量的原因。
你可以很容易地用谷歌搜索代码,所以我不会在这里粘贴它。
【讨论】: