C アプリケーションでの Windows 10 の謎のスレッド作成
この調査では、実行時に予期せず追加のスレッドが作成されるという当惑する観察が行われました。 Windows 10 の単純な C プログラム。Visual Studio 2015 を使用して、次のコードで新しいコンソール アプリケーションが作成されました。
<code class="cpp">int main() { return 0; }</code>
return ステートメントにブレークポイントを設定し、デバッガーでプログラムを実行すると、このプログラムは、Windows 7 では 1 つのスレッドしか表示しませんでした。しかし、Windows 10 では、驚くべき数の 5 つのスレッドが存在しました。メイン スレッドと、同期オブジェクトを待機している 4 つの追加の「ワーカー スレッド」です。
発表スレッドの起源
提起された質問は、「誰がこれらの余分なスレッドを立ち上げているのか?」というものでした。調査するには、[デバッグ] > [Windows] > [スレッド] ウィンドウにアクセスし、可視性を向上させるために Microsoft Symbol Server を有効にすることが提案されています。これにより、追加のスレッドが「ntdll.dll!TppWorkerThread」として識別されたことが明らかになりました。
DLL ロードの役割
TppWorkerThread() エントリポイントにブレークポイントを設定すると、次の結果が得られます。これらのスレッドの起源についての洞察を提供する貴重なスタック トレース。 Windows 10 ローダーがスレッド プールを利用して DLL をロードしていることが判明しました。この動作は Windows 7 には存在しませんでした。これは、Windows 10 の初期化プロセスに大きな変更が加えられたことを示しています。
高速起動のための同時初期化
複数のコアを活用することで、Windows 10 は効果的に高速化されます。メインスレッドと DLL ロードタスクの両方を同時に実行することで、アプリケーションの初期化を開始します。この動作により、全体的な初期化パフォーマンスが向上し、Windows 10 の高度なリソース管理機能の利点が実証されます。
以上がWindows 10 C アプリケーションで複数のスレッドが作成されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。