【问题标题】:interaction between Queue and pool of Threads?队列和线程池之间的交互?
【发布时间】:2015-04-27 15:40:55
【问题描述】:

我正在创建一个从外部提供程序接收数据的 C++ 应用程序。每秒的数据量可能非常大。我曾想过使用将数据推送到队列中的线程。然后线程池将从该队列中获取数据。

我的问题是:

  1. 这是处理这个问题的好方法吗?

  2. 如果不是最好的解决方案是什么?

谢谢。

【问题讨论】:

  • 众所周知的生产者/消费者模式和无处不在的解决方案。
  • 我正在考虑使用 stl::Queue 对象。是否有任何其他类型的队列可以优化内存的使用......此外,线程池是否有任何已知的?
  • 您当然可以使用std::queue,另外还有一个std::mutex 来保护读/写操作,以及一个条件变量或信号量,以通知池中的线程数据可用。跨度>
  • 另一种方法是每个线程有一个队列,然后在读取数据时循环遍历队列。这样,每个线程都可以阻塞/等待其“输入”队列中的一个或多个元素。

标签: c++ multithreading pthreads threadpool


【解决方案1】:

1- 这是处理这个问题的好方法吗?

这是一种众所周知的模式,并在许多应用程序中使用。

您可以使用std:queue 来实现这一点。只需使用std:mutex 保护其上的读/写操作。此外,您应该有一个条件变量或信号量,池中的线程正在等待,并在队列中有新数据可用时收到通知。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 2011-03-25
    • 2021-02-20
    • 1970-01-01
    相关资源
    最近更新 更多