gpt4 book ai didi

c++ - pthread 多线程

转载 作者:太空狗 更新时间:2023-10-29 12:07:31 26 4
gpt4 key购买 nike

这是一道设计题。

我总共有 6 个线程和两个 FIFO 队列。 6 个线程是:

  • 2 个生产者产生“entry”(unsigned int)并排队到 Queue1
  • 2 个半消费者从队列 1 中取出条目并入队到队列 2
  • 2个消费者从queue2出队

条目总数为500。

我的问题是:当所有 500 个条目都通过队列 1 路由到队列 2 并出队时,如何让这 2 个半消费者和消费者保持事件状态?对于生产者线程,这很容易,因为我可以维护全局条目数。

因此,如果 total_entries = 500,则从例程返回(产生线程死亡)。我想使用一种有效的方法而不是一些 hack。

环境:Linux、pthread、C/C++。

最佳答案

在“500 个条目”未知的典型线程应用程序中,我认为一些整体控制过程在工作完成后停止所有线程会更常见。

对于您的特定问题,您可以将 EOF 的概念添加到您的 FIFO 中,以便读者可以区分“现在没有可用”和“再也没有可用”。这可以像一个标记值一样简单(也许 0 不是您的线程的合法值并且可以代表它)。

然后您的生产者“关闭”FIFO 的末端,当它变空时,半消费者看到 EOF 并关闭下一个 FIFO 的末端。就像真实文件一样,您需要引用计数来了解两个生产者何时完成或两个半消费者何时完成。

关于c++ - pthread 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4927696/

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