【发布时间】:2019-03-30 20:17:59
【问题描述】:
我正在处理有限数组(或有限多个缓冲区)的标准生产者和消费者问题。我尝试使用信号量来实现它,但遇到了问题。我希望制片人“生产”只说 50 次。之后我希望生产者线程加入主线程。这部分很简单,但我无法做的是加入消费者线程。他们被困在没有数据的信号量上。我该如何解决这个问题?
一种可能的选择是有一个标志变量,当生产者加入 main 时变为 True,之后,主线程将执行与工作线程数量一样多的 post(semaphore)。工作线程每次唤醒后都会检查标志变量,如果为真,它将退出函数。
我认为我的方法效率很低,因为有许多后信号量调用。如果我可以一次解锁所有线程,那就太好了!
编辑:我尝试实现我所说的一切,但由于死锁而无法正常工作
【问题讨论】:
标签: multithreading deadlock semaphore producer-consumer