gpt4 book ai didi

C++:将 5 个消费者同步到 1 个生产者(多线程)

转载 作者:行者123 更新时间:2023-11-30 04:38:45 27 4
gpt4 key购买 nike

我有五个消费者和一个生产者。五个消费者各自从一个生产者输出不同的数据,持续约 10 毫秒。在这 10 毫秒内,生产者为下一个输出准备参数。设置输出参数后,我想设置一个标志,指示消费者开始下一次输出。我只希望生产者在消费者输出数据时生产。

我不确定如何同步五个消费者和一个生产者。我目前有两个标志,runFlag 和 doneFlag。当消费者读取新数据时,我想将 runFlag 设置为 true 以便开始计算,并且我想将 doneFlag 设置为 false,因为计算尚未完成。但是,如果我在一个消费者中将 doneFlag 设置为 false,则在另一个消费者可以检查标志之前,它可能在另一个消费者中为 false。

我希望我的问题足够具体。如果还有什么我可以提供的,请告诉我。另外,我只是在寻找如何进行的一般想法。我知道有多种方法可以做到这一点,但我不确定哪种方法效果最好。

谢谢!

最佳答案

您将需要 2 个事件和一个整数引用计数。

当生产者生产了一些东西时:

  • 发起read_count = 0;
  • 设置事件自述文件
  • 开始等待事件完成;

消费者等待事件 readme。完成工作后,他们会自动增加 read_count。如果 read_count 达到消费者的数量,在您的情况下为 5,则它会设置 completed 事件。因此,生产者可以继续,循环重复。

关于C++:将 5 个消费者同步到 1 个生产者(多线程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2976076/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com