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、それ以外の場合は falsetrue 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.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

注釈

スレッドプールは、各カテゴリの最小値に達するまで、新しいワーカースレッドまたは 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メソッドを使用して、スレッドの最小数を増やすことができます。You can use the SetMinThreads method to increase the minimum number of threads. ただし、これらの値を必要以上に大きくすると、パフォーマンスの問題が発生する可能性があります。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. アクセス許可値:ControlThreadPermission value: ControlThread

適用対象

こちらもご覧ください