繁体   English   中英

如何在C ++ Windows 10应用程序中访问默认线程池?

[英]How to access the default thread pool in C++ windows 10 application?

根据这个SO问题:“为什么Windows 10会在我的程序中启动额外的线程?” 和Hans Passant答案:Windows 10为Windows 10上的每个C ++进程启动一个线程池(至少在VS2013 +中以c ++编译时)。

根据Microsoft文档“线程池”“线程池API(2018-05-30)” ,我找不到加入默认进程线程池的方法。

我可以加入默认的进程线程池吗? ...还是我必须创建一个新的?

以下列出了每个进程有多个线程池的一些缺点:

  • 创建更多可以避免的线程
  • 更多睡眠线程
  • 更多的内存用于其他线程和管理器本身
  • 由于线程池之间可能并发,因此效率较低的线程管理算法。

如果我必须创建新的线程池,而不是每个进程加入/使用一个全局线程池,是否消除了每个进程只有一个线程池的优点? 为什么我们不能验证是否已经创建了线程池并直接使用它? 为什么不仅仅能够加入主流程主题库? 仅像C#中那样只有一个线程池会更好吗?

旁注:我正在研究一种数学算法,该算法可以计算足够长的时间来实现多线程。 此外,它也是第三方DLL的库的一部分。 对于我来说,能够加入一个已经创建的线程池比创建一个新的线程池更加合乎逻辑,并且可能会干扰客户的主进程线程和另一个潜在的线程池。

在获得Raymon Chen的良好回答和丰富信息之后,我发现了我喜欢分享的这篇文章,因为它可以帮助我更好地理解: 20个C ++多线程错误以及如何避免它们

std::async使用Windows上的默认线程池,因此您可能想使用它。

这里这里有更多细节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM