【发布时间】:2018-07-15 17:29:15
【问题描述】:
我已经阅读了一大堆使用信号量的生产者-消费者问题,但我无法找到确切的答案。我想知道的是这个解决方案是否会死锁?
semaphore loadedBuffer = 0
semaphore emptyBuffer = N where n>2
semaphore mutex = 1
Producer(){
P(emptyBuffers)
P(mutex)
//load buffer
V(loadedBuffers)
v(mutex)
Consumer(){
P(loadedBuffer)
P(mutex)
//empty buffer
V(mutex)
v(emptyBuffer)
我确实相信这是一个很好的解决方案,因为我找不到导致死锁的情况,因为任何时候使用互斥信号量,线程都不可能在等待其他任何东西。
我是否正确地假设这是一个很好的解决方案并且永远不会陷入僵局?
【问题讨论】:
标签: deadlock semaphore producer-consumer