SetThreadIdealProcessor 関数 (processthreadsapi.h)
スレッドの優先プロセッサを設定します。 システムは、可能な限り優先プロセッサ上のスレッドをスケジュールします。
64 を超えるプロセッサを持つシステムでは、この関数は、呼び出し元スレッドが割り当てられている プロセッサ グループ 内の論理プロセッサに優先プロセッサを設定します。 SetThreadIdealProcessorEx 関数を使用して、プロセッサ グループと優先プロセッサを指定します。
構文
DWORD SetThreadIdealProcessor(
[in] HANDLE hThread,
[in] DWORD dwIdealProcessor
);
パラメーター
[in] hThread
優先プロセッサを設定するスレッドへのハンドル。 ハンドルには、THREAD_SET_INFORMATIONアクセス権が必要です。 詳細については、「 スレッド セキュリティとアクセス権」を参照してください。
[in] dwIdealProcessor
スレッドに推奨されるプロセッサの数。 この値は 0 から始まります。 このパラメーターがMAXIMUM_PROCESSORS場合、関数は変更せずに現在の理想的なプロセッサを返します。
戻り値
関数が成功した場合、戻り値は以前の優先プロセッサです。
関数が失敗した場合、戻り値は (DWORD) – 1 です。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
GetSystemInfo 関数を使用して、コンピューター上のプロセッサの数を決定できます。 また、GetProcessAffinityMask 関数を使用して、スレッドの実行が許可されているプロセッサをチェックすることもできます。 GetProcessAffinityMask はビットマスクを返しますが、SetThreadIdealProcessor は整数値を使用してプロセッサを表します。
Windows 11 および Windows Server 2022 以降では、プロセッサ数が 64 を超えるシステムでは、プロセスとスレッドのアフィニティは、既定ですべてのプロセッサ グループにわたって、システム内のすべてのプロセッサにまたがっています。 SetThreadIdealProcessor 関数は、スレッドのプライマリ グループ内の論理プロセッサに優先プロセッサを設定します。
この関数を使用するアプリケーションをコンパイルするには、_WIN32_WINNTを 0x0400 以降として定義します。 詳細については、「 Windows ヘッダーの使用」を参照してください。
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.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |