スレッドとプロセス
更新 : 2007 年 11 月
スレッドとプロセスは、コンピュータ科学における関連概念です。いずれも特定の順序で実行する必要がある命令のシーケンスを表します。ただし、別個のスレッドやプロセスの命令は並列実行できます。
プロセスは、オペレーティング システム内に存在するものであり、ユーザーがプログラムやアプリケーションとして認識するものに相当します。一方、スレッドはプロセス内に存在します。このため、スレッドは、軽量プロセスと呼ばれることもあります。各プロセスは、1 つ以上のスレッドで構成されます。
複数のプロセスが存在すると、コンピュータは、同時に複数のタスクを実行できます。複数のスレッドが存在すると、プロセスで作業を分割して並列実行できます。マルチプロセッサを搭載したコンピュータでは、プロセスやスレッドを各プロセッサに振り分けて実行できます。これにより、真の並列処理が実現されます。
完全な並列処理は、常に実現できるとは限りません。スレッドの同期が必要になることがあります。スレッドは、別のスレッドが結果を生成するまで待機したり、別のスレッドが使用しているリソースに排他的にアクセスしたりすることが必要な場合があります。同期に関する問題は、マルチスレッド アプリケーションで発生するバグの一般的な原因です。また、スレッドは、決して利用可能にならないリソースを待機することがあります。その結果、デッドロックと呼ばれる状態が生じることがあります。
Visual Studio デバッガは、強力で使いやすい、スレッドとプロセスのデバッグ用ツールを提供します。
Visual Studio のスレッドおよびプロセスのデバッグ用ツール
Visual Studio でのプロセスのデバッグで使用する主要なツールは、[プロセスにアタッチ] ダイアログ ボックス、[プロセス] ウィンドウ、および [デバッグの場所] ツール バーです。スレッドのデバッグで使用する主なツールは、[スレッド] ウィンドウ、ソース ウィンドウのスレッド マーカー、および [デバッグの場所] ツール バーです。
各ツールで提供される情報と実行できる操作を次の表に示します。
ユーザー インターフェイス |
提供される情報 |
実行できる操作 |
---|---|---|
[プロセスにアタッチ] ダイアログ ボックス |
アタッチが可能なプロセス
|
アタッチ先のプロセスの選択。 リモート コンピュータの選択。 リモート コンピュータに接続するためのトランスポートの種類の変更。 |
[プロセス] ウィンドウ |
アタッチされたプロセス
|
ツールでの操作 :
ショートカット メニューでの操作 :
|
[スレッド] ウィンドウ |
現在のプロセス内のスレッド
|
ショートカット メニューでの操作 :
その他の操作 :
|
ソース ウィンドウ |
スレッドが 1 つか複数かを示す、左端余白のスレッド インジケータ |
ショートカット メニューでの操作 :
|
[デバッグの場所] ツール バー |
|
|