英語で読む

次の方法で共有


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

定義

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

C#
public static bool SetMaxThreads(int workerThreads, int completionPortThreads);

パラメーター

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した場合でも、実際の最大スレッド数は要求よりも小さい場合があります。

適用対象

製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

こちらもご覧ください