SetThreadPriority

指定されたスレッドの相対優先度を変更します。プロセスの優先度クラスおよびこの相対優先度から、スレッドの基準優先度が決定されます。

BOOL SetThreadPriority(
    HANDLE hThread,   // thread handle
    int    nPriority  // relative priority
);

KERNEL32.DLL

引数

hThread

優先度を変更するスレッドのハンドルを指定します。

このハンドルはTHREAD_SET_INFORMATIONアクセス権を持っていなければなりません。

nPriority

相対優先度を指定します。以下の値のいずれかを指定することができます。

-15 (THREAD_PRIORITY_IDLE)

優先度クラスがREALTIME_PRIORITY_CLASSのとき、基準優先度を16にします。それ以外のときは基準優先度を1にします。

-2 (THREAD_PRIORITY_LOWEST)

基準優先度を優先度クラスより2だけ低く設定します。

-1 (THREAD_PRIORITY_BELOW_NORMAL)

基準優先度を優先度クラスより1だけ低く設定します。

0 (THREAD_PRIORITY_NORMAL)

基準優先度を優先度クラスの標準優先度に設定します。

1 (THREAD_PRIORITY_ABOVE_NORMAL)

基準優先度を優先度クラスより1だけ高く設定します。

2 (THREAD_PRIORITY_HIGHEST)

基準優先度を優先度クラスより2だけ高く設定します。

15 (THREAD_PRIORITY_TIME_CRITICAL)

優先度クラスがREALTIME_PRIORITY_CLASSのとき、基準優先度を31にします。それ以外のときは基準優先度を15にします。

Windows 2000/XP: このパラメータに-7,-6,-5,-4,-3,3,4,5,6を指定することもできます。

戻り値

成功すると0以外の値が返ります。

失敗すると0が返ります。拡張エラー情報を取得するには、GetLastError関数を使います。

解説

それぞれのスレッドは、プロセスの優先度クラスとスレッドの相対優先度から決定される基準優先度を持ちます。システムは、すべての実行可能スレッドの基準優先度を使用して、次のCPUのタイムスライスを与えるスレッドを決定します。プロセスの優先度クラスはSetPriorityClass関数で指定します。

対応情報

Windows 95 以降 / Windows NT 3.1 以降