ExitThread 関数 (processthreadsapi.h)
呼び出し元のスレッドを終了します。
構文
void ExitThread(
[in] DWORD dwExitCode
);
パラメーター
[in] dwExitCode
スレッドの終了コード。
戻り値
なし
解説
ExitThread は、C コードでスレッドを終了する場合に推奨される方法です。 ただし、C++ コードでは、デストラクターを呼び出したり、その他の自動クリーンアップを実行したりする前に、スレッドが終了します。 したがって、C++ コードでは、スレッド関数から を返す必要があります。
この関数が呼び出されると (明示的に、またはスレッド プロシージャから戻ります)、現在のスレッドのスタックの割り当てが解除され、完了ポートに関連付けられていないスレッドによって開始されたすべての保留中の I/O が取り消され、スレッドが終了します。 アタッチされているすべてのダイナミック リンク ライブラリ (DLL) のエントリ ポイント関数が、スレッドが DLL からデタッチされていることを示す値を使用して呼び出されます。
この関数が呼び出されたときにスレッドがプロセスの最後のスレッドである場合、スレッドのプロセスも終了します。
スレッド オブジェクトの状態が通知され、スレッドの終了を待機していた他のスレッドが解放されます。 スレッドの終了状態は、STILL_ACTIVE から dwExitCode パラメーターの値に変わります。
スレッドを終了しても、必ずしもオペレーティング システムからスレッド オブジェクトが削除されるとは限りません。 スレッド オブジェクトは、スレッドへの最後のハンドルが閉じられると削除されます。
ExitProcess、ExitThread、CreateThread、CreateRemoteThread 関数、および (CreateProcess 呼び出しの結果として) 開始されるプロセスは、プロセス内で相互にシリアル化されます。 これらのイベントのうち、一度に 1 つのアドレス空間で発生できるイベントは 1 つだけです。 つまり、次の制限が保持されます。
- プロセスの起動および DLL 初期化ルーチン中に、新しいスレッドを作成できますが、プロセスに対して DLL の初期化が行われるまで実行は開始されません。
- プロセス内のスレッドは、一度に 1 つの DLL 初期化またはデタッチ ルーチンに含めることができます。
- ExitProcess は、DLL 初期化ルーチンまたはデタッチ ルーチンにスレッドが存在しない限り、戻りません。
GetExitCodeThread 関数を使用して、スレッドの終了コードを取得します。
Windows Phone 8.1: この関数は、Windows Phone 8.1 以降のWindows Phone ストア アプリでサポートされています。
Windows 8.1と Windows Server 2012 R2: この関数は、Windows 8.1、Windows Server 2012 R2 以降の Windows ストア アプリでサポートされています。
例
例については、「 イベント オブジェクトの使用」を参照してください。
要件
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | processthreadsapi.h (Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2 の Windows.h を含む) |
Library | Kernel32.lib;Windows Phone 8.1 の WindowsPhoneCore.lib |
[DLL] | Kernel32.dll;Windows Phone 8.1 での KernelBase.dll |