SwitchToThread 関数 (processthreadsapi.h)
呼び出し元のスレッドから、現在のプロセッサ上で実行する準備が整っている別のスレッドに実行を切り替えます。 オペレーティング システムは、次に実行されるスレッドを選択します。
構文
BOOL SwitchToThread();
戻り値
SwitchToThread 関数を呼び出すと、オペレーティング システムが別のスレッドに実行を切り替えた場合、戻り値は 0 以外になります。
実行する準備ができているスレッドが他にない場合、オペレーティング システムは実行を別のスレッドに切り替えず、戻り値は 0 です。
注釈
呼び出し元スレッドのプロセッサで最大 1 つのスレッド スケジュールタイム スライスに対して、実行のイールドが有効になります。 オペレーティング システムは、そのプロセッサがアイドル状態であるか、優先度の低いスレッドを実行している場合でも、実行を別のプロセッサに切り替えるわけではありません。
yielding スレッドのタイム スライスが経過すると、オペレーティング システムは、生成スレッドの実行を再スケジュールします。 再スケジュールは、生成スレッドの優先順位と、実行できる他のスレッドの状態によって決まります。
オペレーティング システムは、コンカレンシー制御によってのみ実行できないスレッドに切り替えられません。 たとえば、I/O 完了ポートまたはスレッド プールでは、実行できる関連付けられたスレッドの数が制限されます。 スレッドの最大数が既に実行されている場合、実行中のスレッドが完了するまで、関連付けられている追加のスレッドを実行することはできません。 スレッドが SwitchToThread を使用して、関連する追加のスレッドの 1 つが何らかの作業を実行するのを待機すると、プロセスがデッドロックする可能性があります。
この関数を使用するアプリケーションをコンパイルするには、_WIN32_WINNTを 0x0400 以降として定義します。 詳細については、「 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 |
[DLL] | Kernel32.dll |