IDirectPlay8ThreadPool::SetThreadCount メソッド
IDirectPlay8ThreadPool::SetThreadCount メソッド
指定したプロセッサまたはすべてのプロセッサのスレッド数を変更する。
構文
HRESULT SetThreadCount(
const DWORD dwProcessorNum,
const DWORD dwNumThreads,
const DWORD dwFlags
);
パラメータ
- dwProcessorNum
[in] プロセッサ数を指定する。すべてのプロセッサのスレッド数を変更するには、-1 を設定する。 - dwNumThreads
[in] 新しいスレッド数を指定する。 - dwFlags
[in] 予約済み。0 でなければならない。
戻り値
成功した場合は DPN_OK を返す。それ以外の場合、次のいずれかのエラーを返す。
DPNERR_UNINITIALIZED | 要求されたオブジェクトが初期化されていない。 |
DPNERR_INVALIDFLAGS | このメソッドに渡されたフラグは無効である。 |
DPNERR_INVALIDPARAM | メソッドに渡された 1 つあるいは複数のパラメータが無効である。 |
DPNERR_NOTALLOWED | この機能は、このオブジェクトでは許可されていない。 |
注意
dwNumThreads パラメータの値が現在のスレッド数より大きい場合、新しいスレッドが開始され、新しいスレッドごとに DPN_MSGID_CREATE_THREAD メッセージを生成した後、このメソッドが戻る。
dwNumThreads パラメータの値が現在のスレッド数より小さい場合、余分なスレッドはシャットダウンされ、閉じられるスレッドごとに DPN_MSGID_DESTROY_THREAD メッセージを生成した後、このメソッドが戻る。
スレッド数が 0 に設定されている場合、Microsoft® DirectPlay® はアプリケーションにスレッドを作成しない。したがって、アプリケーションで何か処理を行うには、定期的に IDirectPlay8ThreadPool::DoWork を呼び出す必要がある。
スレッド数が 0 に設定されている場合、DirectPlay のタスクの動作は DirectPlay スレッドを使っている場合とは異なる。したがって、セッションを作成した後は、ゼロ スレッド数モードとマルチスレッド数モードを切り替えないことをお勧めする。
IDirectPlay8ThreadPool::DoWork の未処理の呼び出しがあるときにこのメソッドが呼び出された場合、このメソッドは DPNERR_NOTALLOWED を返す。この場合、スレッド数は変化しない。
dwNumThreads パラメータが現在のスレッド数より小さく、このメソッドが IDirectPlay8ThreadPool スレッドから呼び出される場合、このメソッドは DPNERR_NOTALLOWED を返す。この場合、スレッド数は変化しない。