次の方法で共有


_endthread、_endthreadex

スレッドを終了します。_endthread は、_beginthread によって作成されたスレッドを終了し、_endthreadex は、_beginthreadex によって作成されたスレッドを終了します。

重要

この API は、Windows ランタイムで実行するアプリケーションでは使用できません。詳細については、「/ZW でサポートされない CRT 関数」を参照してください。

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 ランタイム ライブラリのマルチスレッド バージョンのみ。

使用例

_beginthread の例を参照してください。

同等の .NET Framework 関数

該当なし。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

関連項目

プロセス制御と環境制御

_beginthread、_beginthreadex