c++ - 为什么 C++ 标准库中没有 std::thread_pool ?

标签 c++ multithreading language-lawyer threadpool std

对我来说,尽管有大量的多线程构造,但该标准却缺少线程池类,这似乎很奇怪。什么原因可能会阻止委员会将其添加到标准中?

最佳答案

C++ 与 C 一样,旨在为程序员提供尽可能多的控制权。 C++ 中的几乎所有内容都是一个非常简单的包装器。这使程序员可以自由地实现他们想要的任何功能。

“什么是工作”的概念有点抽象,并且取决于用例,因此 C++ 为您提供了工作线程(线程),并让您定义一个策略,以决定如何在工作线程之间分配工作.

例如,在 Python 中,您可以将工作映射到线程。使用这意味着只要有工作可用,线程就会接管该工作。但是,如果您希望线程仅在满足某些条件后AND有工作要做时才做工作,该怎么办?您可以设计您的 thread_pool 类来满足所有这些规范。在 Python 中,您必须在线程池库之外单独处理这些检查。

虽然没有官方答案,但我认为这个答案更有意义。 C++ 是关于使用最少量工具的控制(但与 C 相比是扩展集)。委员会很可能不会添加 thread_pool 类,因为计算机科学中最难做的事情就是让人们达成一致。线程池实现起来并不一定非常困难,而且定义 worker 的定义可以说更难。

关于c++ - 为什么 C++ 标准库中没有 std::thread_pool ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58774356/

相关文章:

c++11 - 是全局变量 constexpr 的地址吗?

Java 多线程矩阵乘法

c - 为什么读取由其他线程修改的变量既不是旧值也不是新值

c++ - MSVC 错误?未找到受约束函数的重载成员

c++ - 使用 Sun Studio 12 移植到 Solaris SPARC

multithreading - 原子操作在进程间的工作方式是否与在线程间的工作方式相同?

c++ - 可以为 FILE& 定义 operator<< 或 operator>> 吗?

c++ - Cmake 仅链接到可执行文件

c++ - 使用 operator<< 重载打印派生对象不起作用

c++ - 如何在 VS 中使用 asm 中的浮点变量