如何访问 C++ windows10 应用程序中的默认线程池?
How to access the default thread pool in C++ windows 10 application?
根据这个 和 Hans Passant 的回答:Windows 10 在 Windows 10 上为每个 C++ 进程启动一个线程池(至少在 VS2013+ 中用 C++ 编译时) ).
根据微软文档"Thread Pools" and "Thread Pool API (2018-05-30)",我找不到加入默认进程线程池的方法。
我可以加入默认进程线程池吗?如何加入? ...还是我必须创建一个新的?
这是我看到的每个进程有多个线程池的一些缺点的列表:
- 创建了更多本可以避免的线程
- 更多休眠线程
- 额外线程和管理器本身占用更多内存
- 由于线程池之间可能并发,线程管理算法效率较低。
如果我必须创建新的线程池而不是 joining/using 每个进程一个全局线程池,是否会消除每个进程只有一个线程池的优势?为什么不能验证是否有已经创建的线程池直接使用呢?为什么不只是能够加入主进程 thead 池?像C#那样只有一个线程池不是更好吗?
旁注:我正在研究一种数学算法,该算法的计算时间足以实现多线程。此外,它是第 3 方 DLL 库的一部分。能够加入一个已经创建的线程池对我来说似乎比创建一个新线程池更合乎逻辑,并且可能会干扰客户主进程线程和另一个潜在的线程池。
在得到Raymon Chen的很好的回答和很好的信息后,我发现了这篇我喜欢分享的文章,因为它帮助我更好地理解:Top 20 C++ multithreading mistakes and how to avoid them
std::async
在 Windows 上使用默认线程池,因此您可能想使用它。
更多详情here and 。
根据这个
根据微软文档"Thread Pools" and "Thread Pool API (2018-05-30)",我找不到加入默认进程线程池的方法。
我可以加入默认进程线程池吗?如何加入? ...还是我必须创建一个新的?
这是我看到的每个进程有多个线程池的一些缺点的列表:
- 创建了更多本可以避免的线程
- 更多休眠线程
- 额外线程和管理器本身占用更多内存
- 由于线程池之间可能并发,线程管理算法效率较低。
如果我必须创建新的线程池而不是 joining/using 每个进程一个全局线程池,是否会消除每个进程只有一个线程池的优势?为什么不能验证是否有已经创建的线程池直接使用呢?为什么不只是能够加入主进程 thead 池?像C#那样只有一个线程池不是更好吗?
旁注:我正在研究一种数学算法,该算法的计算时间足以实现多线程。此外,它是第 3 方 DLL 库的一部分。能够加入一个已经创建的线程池对我来说似乎比创建一个新线程池更合乎逻辑,并且可能会干扰客户主进程线程和另一个潜在的线程池。
在得到Raymon Chen的很好的回答和很好的信息后,我发现了这篇我喜欢分享的文章,因为它帮助我更好地理解:Top 20 C++ multithreading mistakes and how to avoid them
std::async
在 Windows 上使用默认线程池,因此您可能想使用它。
更多详情here and