ThreadPool.SetMaxThreads(Int32, Int32) メソッド

定義

同時にアクティブにできるスレッド プールへの要求の数を設定します。 この数を超える要求はすべて、スレッド プール スレッドが使用可能になるまでキューに置かれたままになります。

public:
 static bool SetMaxThreads(int workerThreads, int completionPortThreads);
public static bool SetMaxThreads (int workerThreads, int completionPortThreads);
static member SetMaxThreads : int * int -> bool
Public Shared Function SetMaxThreads (workerThreads As Integer, completionPortThreads As Integer) As Boolean

パラメーター

workerThreads
Int32

スレッド プール内のワーカー スレッドの最大数。

completionPortThreads
Int32

スレッド プール内の非同期 I/O スレッドの最大数。

戻り値

変更が成功した場合は true。それ以外の場合は false

注釈

Windows スレッド プールが .NET スレッド プールの代わりに使用されるように構成されている場合、このメソッドはサポートされません。 詳細については、 Windows スレッド プールの構成設定に関するページを参照してください。

ワーカー スレッドまたは I/O 完了スレッドの最大数を、コンピューター上のプロセッサの数より小さい値に設定することはできません。 存在するプロセッサの数を確認するには、 プロパティの値を Environment.ProcessorCount 取得します。 さらに、ワーカー スレッドまたは I/O 完了スレッドの最大数を、対応するワーカー スレッドまたは I/O 完了スレッドの最小数より小さく設定することはできません。 スレッド プールの最小サイズを確認するには、 メソッドを呼び出します GetMinThreads

インターネット インフォメーション サービス (IIS) や SQL Server などによって共通言語ランタイムがホストされている場合、ホストはスレッド プール サイズの変更を制限または防止できます。

スレッド プール内のスレッドの最大数を変更する場合は注意が必要です。 コードには利点があるかもしれませんが、変更が使用するコード ライブラリに悪影響を及ぼす可能性があります。

スレッド プールのサイズを大きく設定すると、パフォーマンスの問題が発生する可能性があります。 同時に実行されているスレッドが多すぎると、タスク切り替えオーバーヘッドが重要な要因になります。

注意

スレッド プールには、最大スレッド数の上限がある場合があります (実装によっては 、 など short.MaxValue)。 引数の値は上限に達するため、メソッドが を返 trueした場合でも、実際の最大スレッド数は要求よりも小さい場合があります。

適用対象

こちらもご覧ください