我有一个producer和consumer进程,以及它们之间的共享内存区域。当有新数据可用时,我使用Condition对象从生产者进程向消费者进程发出信号。在
当前的问题是等一下()具有以下跟踪:
Producer: (3, 3, 30, 100)
Producer Done
Consumer: (3, 3, 30, 100)
Consumer Waiting...
据我所知,在消费者准备好接收通知之前,生产者通知了消费者,因此一直在等待生产者的通知。确保消费者只在准备好时才收到信号的最佳方法是什么?在
^{pr2}$
如果没有人在等待,
Condition.notify
方法是noop。您需要将逻辑封装在while循环中,并定期检查数据是否准备就绪。Python文档有一个P&C example。您需要为wait
方法设置一个超时,并在每次迭代时检查数组中的数据。在使用
Lock
和Event
更容易避免长时间的轮询机制。在然而,我强烈建议使用
Pipe
或Queue
来实现生产者和消费者模式。这是一个更强大的机制。在相关问题 更多 >
编程相关推荐