c++ - C++11中的线程池和执行队列

标签 c++ c++11 threadpool stdthread

我有一堆并行任务要完成,但只有几个工作线程(比如 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/

相关文章:

c++ - 递归最小堆错误?

c++ - 如何在 Arch 中安装 libx11-dev? (以下为原标题)

c++ - 如何从字符串变量为正则表达式构建原始字符串

c++ - 为什么非常量指针上的 const Ref 被解释为 const 指针?

java - 如何使用LinkedBlockingQueue来运行任务

java线程池任务超时问题

c++ - pthread_create 缓冲区大小。不够?

c++ - 运行选项从 Microsoft Visual C++ 2010 消失

c++ - 构造用于追加的字符串

asp.net - ThreadPools vs Own Threads 用于长时间运行的进程