Windows 10 在C 應用程式中神秘的線程創建
在這次調查中,我們對運行時意外創建額外線程進行了令人費解的觀察Windows 10 中的一個簡單的C 程式。使用Visual Studio 2015,使用以下程式碼建立了一個新的控制台應用程式:
<code class="cpp">int main() { return 0; }</code>
在return 語句處設定斷點並在偵錯器中執行程式時,程式在Windows 7 上僅顯示一個線程。然而,在 Windows 10 上,存在著數量驚人的 5 個執行緒:主執行緒和等待同步物件的四個附加「工作執行緒」。
揭曉線程起源
提出的問題是:「誰在啟動這些額外的線程?」為了進行調查,建議訪問「調試> Windows > 線程」視窗並啟用Microsoft 符號伺服器以提高可見性。這表示附加執行緒被識別為“ntdll.dll!TppWorkerThread”。
DLL 載入的作用
在 TppWorkerThread() 入口點設定斷點產生了有價值的堆疊追蹤,可以深入了解這些執行緒的起源。我們發現 Windows 10 載入程式正在利用執行緒池來載入 DLL。 Windows 7 中沒有此行為,這表示 Windows 10 的初始化過程發生了重大變化。
並發初始化以加快啟動速度
透過利用多核心,Windows 10 有效加速透過同時執行主執行緒和 DLL 載入任務來完成應用程式的初始化。此行為增強了整體初始化效能,並展示了 Windows 10 進階資源管理功能的優勢。
以上是為什麼在 Windows 10 C 應用程式中建立多執行緒?的詳細內容。更多資訊請關注PHP中文網其他相關文章!