_endthread、_endthreadex
_endthread は _beginthread によって作成されたスレッドを終了し、_endthreadex は _beginthreadex によって作成されたスレッドを終了します。
void _endthread( void );
void _endthreadex(
unsigned retval
);
パラメーター
- retval
スレッド終了コード。
解説
_endthread または _endthreadex を明示的に呼び出すと、スレッドを終了できます。ただし _endthread または _endthreadex は、_beginthread や _beginthreadex のパラメーターとして渡されたルーチンからスレッドが戻ると自動的に呼び出されます。 endthread または _endthreadex を呼び出してスレッドを終了すると、スレッドに割り当てられていたリソースを確実に解放できます。
注意
Libcmt.lib にリンクする実行可能ファイルでは、Win32 の ExitThread API を呼び出さないでください。呼び出すと、割り当てられたリソースをランタイム システムで再利用することができなくなります。 _endthread と _endthreadex は、割り当てられているスレッド リソースを解放し、ExitThread を呼び出します。
_endthread は、スレッド ハンドルを自動的に閉じます。 この動作は Win32 の ExitThread API とは異なります。そのため、_beginthread および _endthread を使用する場合は、Win32 の CloseHandle API を呼び出してスレッド ハンドルを明示的に閉じることはしないでください。
Win32 の ExitThread API と同様に、_endthreadex はスレッド ハンドルを閉じません。 そのため、_beginthreadex および _endthreadex を使用する場合は、Win32 の CloseHandle API を呼び出すことによってスレッド ハンドルを閉じる必要があります。
注意
_endthread と _endthreadex によって、C++ デストラクターはスレッドで保留状態になり、呼び出されません。
必要条件
機能 |
必須ヘッダー |
---|---|
_endthread |
<process.h> |
_endthreadex |
<process.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
ライブラリ
C ランタイム ライブラリのマルチスレッド バージョンのみ。
使用例
「_beginthread」の例を参照してください。
同等の .NET Framework 関数
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。