我有一堆并行任务要完成,但只有几个工作线程(比如 8 个,但我希望它是可配置的)。
因此,8 个线程运行,每个线程都会从队列中弹出下一个任务,只要队列有任务即可。
C++11 是否提供任何内置构造来帮助实现此设计?
我看到一些与 std::async
相关的类似讨论,但我认为它给编译器的实现留下了太多的内容。
最佳答案
您可以有std::vector<std::thread>
如果你想要池和工作队列,你必须自己用 C++11 实现。
如果您想要通用线程池实现,那么 Boost.Asio包含一个。您只需io_service::run()
从多个线程建立一个线程池,然后可以使用 io_service::post()
给出要池化的工作。 。非常干净、简单、通用,只有这个名字io_service
如果您所做的工作与 I/O 无关,则会令人困惑。
关于c++ - C++11中的线程池和执行队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17961899/