Aracılığıyla paylaş


ThreadPool.GetMinThreads(Int32, Int32) Yöntem

Tanım

İş parçacığı oluşturma ve yok etme işlemini yönetmek için bir algoritmaya geçmeden önce, yeni istekler yapıldıktan sonra iş parçacığı havuzunun isteğe bağlı olarak oluşturduğu en az iş parçacığı sayısını alır.

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)

Parametreler

workerThreads
Int32

Bu yöntem döndürdüğünde, iş parçacığı havuzunun isteğe bağlı olarak oluşturduğu en az çalışan iş parçacığı sayısını içerir.

completionPortThreads
Int32

Bu yöntem döndürdüğünde, iş parçacığı havuzunun isteğe bağlı olarak oluşturduğu en az zaman uyumsuz G/Ç iş parçacığı sayısını içerir.

Örnekler

Aşağıdaki örnek, en az çalışan iş parçacığı sayısını dört olarak ayarlar ve en az zaman uyumsuz G/Ç tamamlama iş parçacığı sayısı için özgün değeri korur.

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

Açıklamalar

İş parçacığı havuzu, her kategori için minimum değere ulaşana kadar isteğe bağlı yeni çalışan iş parçacıkları veya G/Ç tamamlama iş parçacıkları sağlar. Varsayılan olarak, en az iş parçacığı sayısı sistemdeki işlemci sayısına ayarlanır. En düşük değere ulaşıldığında, iş parçacığı havuzu bu kategoride ek iş parçacıkları oluşturabilir veya bazı görevlerin tamamlanmasını bekleyebilir. .NET Framework 4'ünden başlayarak, iş parçacığı havuzu aktarım hızını iyileştirmek için iş parçacıklarını oluşturur ve yok eder. Bu işlem, zaman birimi başına tamamlanan görev sayısı olarak tanımlanır. Çok az iş parçacığı kullanılabilir kaynakları en iyi şekilde kullanmayabilirken, çok fazla iş parçacığı kaynak çekişmesini artırabilir.

Not

Talep düşük olduğunda, gerçek iş parçacığı havuzu iş parçacığı sayısı minimum değerlerin altına düşebilir.

Şunlara uygulanır

Ayrıca bkz.