首页 > 解决方案 > 生产者/消费者中的信号量与互斥量

问题描述

在生产者-消费者问题中,为什么我们经常建议使用信号量而不是使用锁/互斥锁?

我看不出使用信号量的正当理由,因为我们只有2 个线程在协调。在这种情况下,锁似乎更容易编码和推理,因为一个线程将锁定缓冲区然后释放它,以便其他线程可以执行相同的操作。只有 2 个线程,所以我看不到信号的使用。

谁能说出为什么建议通常将信号量用于生产者-消费者?

标签: javaconcurrencylockingmutexsemaphore

解决方案


因为如果您只使用锁/互斥锁,您无法阻止消费者在释放锁/互斥锁后立即获取锁/互斥锁。例如,这可能会导致缓冲区为空但生产者暂时不使用锁/互斥锁的情况。


推荐阅读