【发布时间】:2015-04-27 15:40:55
【问题描述】:
我正在创建一个从外部提供程序接收数据的 C++ 应用程序。每秒的数据量可能非常大。我曾想过使用将数据推送到队列中的线程。然后线程池将从该队列中获取数据。
我的问题是:
这是处理这个问题的好方法吗?
如果不是最好的解决方案是什么?
谢谢。
【问题讨论】:
-
众所周知的生产者/消费者模式和无处不在的解决方案。
-
我正在考虑使用 stl::Queue 对象。是否有任何其他类型的队列可以优化内存的使用......此外,线程池是否有任何已知的?
-
您当然可以使用
std::queue,另外还有一个std::mutex来保护读/写操作,以及一个条件变量或信号量,以通知池中的线程数据可用。跨度> -
另一种方法是每个线程有一个队列,然后在读取数据时循环遍历队列。这样,每个线程都可以阻塞/等待其“输入”队列中的一个或多个元素。
标签: c++ multithreading pthreads threadpool