我有五个消费者和一个生产者。每个消费者输出不同的数据,从一个生产者那里得到~10ms。在这10ms期间,制造商准备下一个输出的参数。当设置输出参数时,我想设置一个标志,指示消费者开始下一个输出。我只希望生产者在消费者输出数据时生产。C++:将5个消费者同步到1个生产者(多线程)
我不确定如何同步五个消费者和单个生产者。我目前有两个标志,runFlag和doneFlag。当消费者读取新数据时,我想将runFlag设置为true,以便计算开始,并且我想将doneFlag设置为false,因为计算尚未完成。但是,如果我将一个消费者的doneFlag设置为false,那么在另一个消费者可以检查该标志之前,它可能是错误的。
我希望我的问题足够具体。请让我知道,如果有什么我可以提供。另外,我只是在寻找如何进行的一般想法。我知道有多种方法可以做到这一点,但我不确定哪种方法最好。
谢谢!
您可以使用支持共享互斥的Boost线程。 [链接](http://www.boost.org/doc/libs/1_43_0/doc/html/thread/synchronization.html#thread.synchronization.mutex_concepts.shared_lockable) – 2010-06-04 16:48:47