使用Visual Studio 2015,在一个新的空C ++專案中,為控製台應用程式構建以下內容:
int main() {
return 0;
}
在返迴值上設置斷點,然後在除錯器中啟動程式.在windows 7上,从斷點開始,该程式只有一个執行緒.但是在windows 10上,它有五个(!)執行緒:主執行緒和四个等待同步物件的"工作執行緒"。
谁在啟動執行緒池(或如何查詢執行緒)?
最新回復
- 5月前1 #
- 5月前2 #
這是預設的執行緒池。 https://docs.microsoft.com/zh-CN/windows/desktop/procthread/thread-pools
每个程序都有一个預設的執行緒池。
相似問題
- c++:什麼是Intel HD 3000上正確的OpenGL初始化?c++windowsopenglintel2021-01-10 18:58
水晶球說,"除錯>windows>執行緒"視窗在
ntdll.dll!TppWorkerThread
上顯示了這些執行緒 .確保啟用Microsoft Symbol Server自己查看此資訊,請使用"工具">"選項">"除錯">" Symbols"。這在VS2013中也会發生,因此绝對不是由VS2015的新诊斷功能引起的,@ Adam的猜測不可能正確。
TppworkerThread()是執行緒池執行緒的入口點.当我在此函式上使用Debug>New Breakpoint>Function Breakpoint設置斷點時.当第二个執行緒池執行緒開始執行時,我很幸運地捕获到了第一个執行緒池執行緒的堆棧跟蹤:
顯然,載入程式正在windows 10上使用執行緒池載入DLL.那肯定是新的:)此時,主執行緒也在載入器中執行,並發工作。
因此windows 10正在利用多个內核来更快地初始化程序.非常多的功能,不是錯誤:)