ThreadPool.SetMinThreads(Int32, Int32) Method

Definition

Задает минимальное число потоков, создаваемых пулом потоков по требованию по мере поступления новых запросов перед переходом на алгоритм управления созданием и уничтожением потоков.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

Parameters

workerThreads
Int32

Минимальное количество рабочих потоков, которые создаются пулом потоков по требованию.The minimum number of worker threads that the thread pool creates on demand.

completionPortThreads
Int32

Минимальное количество потоков асинхронного ввода-вывода, которые создаются пулом потоков по требованию.The minimum number of asynchronous I/O threads that the thread pool creates on demand.

Returns

Boolean

Значение true, если изменение выполнено успешно; в противном случае — значение false.true if the change is successful; otherwise, false.

Examples

В следующем примере минимальное количество рабочих потоков устанавливается равным четырем и сохраняется исходное значение минимального числа потоков завершения асинхронного ввода-вывода.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

Remarks

Пул потоков предоставляет новые рабочие потоки или потоки завершения ввода-вывода по запросу, пока не достигнет минимального значения для каждой категории.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.

Caution

По умолчанию минимальное количество потоков равно количеству процессоров в системе.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.

Applies to

See also