gpt4 book ai didi

C++ - 线程和多队列

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:19 24 4
gpt4 key购买 nike

我需要构建一个由工作人员(表示为线程)和(多个)队列组成的系统。个别作业在其中一个队列中等待,并等待工作线程处理它们。每个工作人员只能处理来自某些队列的作业。没有旋转等待。 C/C++、pthreads、标准 POSIX。

我的问题是“多队列”。我知道如何用一个队列来实现它。工作人员需要等待他们可以处理的所有队列(等待其中的任何一个)。

在 Windows 上我会使用 WaitForMultipleObjects,但这需要是多平台的。

我不需要任何特定的代码,只需要提示或我应该使用的模型的描述。提前致谢。

最佳答案

怎么样:

  • 所有工作线程都等待一个信号量
  • 当任何东西被添加到队列中时,信号量递增,这会唤醒一个线程
  • 线程检查它感兴趣的队列,处理其中一个并返回等待信号量

您将需要额外的互斥锁来控制对队列的实际读写。

关于C++ - 线程和多队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/898881/

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