尽管使用单个主线程的测试程序很简单,但 Windows 10 意外启动了多个附加线程。这个问题提出了谁或如何启动这些线程的问题。
识别线程
调试>窗口>线程窗口显示了这些线程在 ntdll.dll!TppWorkerThread 中的存在。这些是线程池线程,从在 TppWorkerThread() 函数上设置断点可以明显看出。
根本原因:DLL 加载
第一个线程池的堆栈跟踪当第二个线程池线程开始执行时,表明加载程序正在调用线程池来加载 DLL。这是与 Windows 7 相比的一个显着变化,在 Windows 7 中,DLL 的加载不使用线程池。
Windows 10 优化
Windows 10 利用多核来加速进程初始化。用于DLL加载的线程池。这种并发机制提高了性能,并且不被视为错误,而是一种利用现代硬件功能的功能。
以上是为什么 Windows 10 在运行简单程序时会创建额外的线程?的详细内容。更多信息请关注PHP中文网其他相关文章!