ThreadPool.GetMinThreads(Int32, Int32) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera minimalną liczbę wątków tworzonych przez pulę wątków na żądanie, gdy są wykonywane nowe żądania, przed przełączeniem do algorytmu zarządzania tworzeniem i niszczeniem wątków.
public:
static void GetMinThreads([Runtime::InteropServices::Out] int % workerThreads, [Runtime::InteropServices::Out] int % completionPortThreads);
public static void GetMinThreads (out int workerThreads, out int completionPortThreads);
static member GetMinThreads : int * int -> unit
Public Shared Sub GetMinThreads (ByRef workerThreads As Integer, ByRef completionPortThreads As Integer)
Parametry
- workerThreads
- Int32
Gdy ta metoda zwraca wartość , zawiera minimalną liczbę wątków roboczych tworzonych przez pulę wątków na żądanie.
- completionPortThreads
- Int32
Gdy ta metoda zwraca wartość , zawiera minimalną liczbę asynchronicznych wątków we/wy tworzonych przez pulę wątków na żądanie.
Przykłady
Poniższy przykład ustawia minimalną liczbę wątków roboczych na cztery i zachowuje oryginalną wartość dla minimalnej liczby asynchronicznych wątków uzupełniania we/wy.
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
Uwagi
Pula wątków udostępnia nowe wątki robocze lub wątki uzupełniania we/wy na żądanie, dopóki nie osiągnie minimum dla każdej kategorii. Domyślnie minimalna liczba wątków jest ustawiana na liczbę procesorów w systemie. Po osiągnięciu minimum pula wątków może utworzyć dodatkowe wątki w tej kategorii lub poczekać na ukończenie niektórych zadań. Począwszy od .NET Framework 4, pula wątków tworzy i niszczy wątki w celu zoptymalizowania przepływności, która jest definiowana jako liczba zadań, które są wykonywane na jednostkę czasu. Zbyt mało wątków może nie zapewnić optymalnego wykorzystania dostępnych zasobów, podczas gdy zbyt wiele wątków może zwiększyć rywalizację o zasoby.
Uwaga
Gdy zapotrzebowanie jest niskie, rzeczywista liczba wątków puli wątków może spaść poniżej wartości minimalnych.