ThreadPool.SetMinThreads(Int32, Int32) ThreadPool.SetMinThreads(Int32, Int32) ThreadPool.SetMinThreads(Int32, Int32) ThreadPool.SetMinThreads(Int32, Int32) Method

定義

スレッドがオンデマンドで (新しい要求の発生ごとに) 作成するスレッド プールの数を設定します。この数を超えると、スレッドの作成と破棄を管理するためのアルゴリズムに切り替わります。 Sets the minimum number of threads the thread pool creates on demand, as new requests are made, before switching to an algorithm for managing thread creation and destruction.

public:
 static bool SetMinThreads(int workerThreads, int completionPortThreads);
public static bool SetMinThreads (int workerThreads, int completionPortThreads);
static member SetMinThreads : int * int -> bool
Public Shared Function SetMinThreads (workerThreads As Integer, completionPortThreads As Integer) As Boolean
パラメーター
workerThreads
Int32 Int32 Int32 Int32

スレッド プールがオンデマンドで作成するワーカー スレッドの最小数。 The minimum number of worker threads that the thread pool creates on demand.

completionPortThreads
Int32 Int32 Int32 Int32

スレッド プールがオンデマンドで作成する非同期 I/O スレッドの最小数。 The minimum number of asynchronous I/O threads that the thread pool creates on demand.

戻り値

変更が成功した場合は true、それ以外の場合は false true if the change is successful; otherwise, false.

次の例では、ワーカー スレッドの最小数を 4 に設定し、非同期 I/O 完了スレッドの最小数の元の値を保持します。The following example sets the minimum number of worker threads to four, and preserves the original value for the minimum number of asynchronous I/O completion threads.

using namespace System;
using namespace System::Threading;
int main()
{
   int minWorker;
   int minIOC;
   
   // Get the current settings.
   ThreadPool::GetMinThreads( minWorker, minIOC );
   
   // Change the minimum number of worker threads to four, but
   // keep the old setting for minimum asynchronous I/O
   // completion threads.
   if ( ThreadPool::SetMinThreads( 4, minIOC ) )
   {
      
      // The minimum number of threads was set successfully.
   }
   else
   {
      
      // The minimum number of threads was not changed.
   }
}

using System;
using System.Threading;

public class Test
{
    public static void Main()
    {
        int minWorker, minIOC;
        // Get the current settings.
        ThreadPool.GetMinThreads(out minWorker, out minIOC);
        // Change the minimum number of worker threads to four, but
        // keep the old setting for minimum asynchronous I/O 
        // completion threads.
        if (ThreadPool.SetMinThreads(4, minIOC))
        {
            // The minimum number of threads was set successfully.
        }
        else
        {
            // The minimum number of threads was not changed.
        }
    }
}
Imports System
Imports System.Threading

Public Class Test

    <MTAThread> _
    Public Shared Sub Main()
        Dim minWorker, minIOC As Integer
        ' Get the current settings.
        ThreadPool.GetMinThreads(minWorker, minIOC)
        ' Change the minimum number of worker threads to four, but
        ' keep the old setting for minimum asynchronous I/O 
        ' completion threads.
        If ThreadPool.SetMinThreads(4, minIOC) Then
            ' The minimum number of threads was set successfully.
        Else
            ' The minimum number of threads was not changed.
        End If
    End Sub
End Class

注釈

スレッド プールは、新しい worker スレッドまたは I/O 完了スレッド オンデマンドでカテゴリごとの最小値に達するまで。The thread pool provides new worker threads or I/O completion threads on demand until it reaches the minimum for each category. 最小値に達すると、スレッド プールはそのカテゴリで追加のスレッドを作成または、いくつかのタスクを完了するまで待機できます。When the minimum is reached, the thread pool can create additional threads in that category or wait until some tasks complete. 以降では、 .NET Framework 4.NET Framework 4、スレッド プールを作成し、時間の単位あたりの完了タスクの数として定義されているスループットを最適化するためにスレッドを破棄します。Beginning with the .NET Framework 4.NET Framework 4, the thread pool creates and destroys threads in order to optimize throughput, which is defined as the number of tasks that complete per unit of time. スレッドが少なすぎると使用可能なリソースが最適に使用されない可能性があり、スレッドが多すぎるとリソースの競合が増える可能性があります。Too few threads might not make optimal use of available resources, whereas too many threads could increase resource contention.

要求が少ないときは、スレッド プールの実際のスレッド数が最小値を下回る場合があります。When demand is low, the actual number of thread pool threads can fall below the minimum values.

負の数またはアクティブなスレッド プールのスレッドの最大数より大きい数値を指定する場合 (を使用して取得GetMaxThreads)、SetMinThreads返しますfalse最小値のいずれかが変更されていないとします。If you specify a negative number or a number larger than the maximum number of active thread pool threads (obtained using GetMaxThreads), SetMinThreads returns false and does not change either of the minimum values.

注意事項

既定では、スレッドの最小数は、システム上のプロセッサの数に設定します。By default, the minimum number of threads is set to the number of processors on a system. 使用することができます、SetMinThreads最小番号 ofthreads を増加させます。You can use the SetMinThreads method to increase the minimum number ofthreads. ただし、これらの値を必要以上に大きくすると、パフォーマンスの問題が発生する可能性があります。However, unnecessarily increasing these values can cause performance problems. 同時に開始するタスクの数が多すぎる場合は、すべてのタスクで処理速度が低下する可能性があります。If too many tasks start at the same time, all of them might appear to be slow. ほとんどの場合、スレッド プール パフォーマンスが向上スレッドを割り当てるための独自のアルゴリズムを使用します。In most cases, the thread pool will perform better with its own algorithm for allocating threads. プロセッサの数、パフォーマンスが低下もより小さくするには、最小値を減らします。Reducing the minimum to less than the number of processors can also hurt performance.

セキュリティ

SecurityPermission
スレッドを制御する機能。 for the ability to control threads. アクセス許可の値。 ControlThread Permission value: ControlThread

適用対象

こちらもご覧ください