ThreadPool.SetMinThreads(Int32, Int32) Metódus

Definíció

Beállítja a szálkészlet által igény szerint létrehozott szálak minimális számát az új kérések teljesítésekor, mielőtt átváltana a szállétrehozás és -megsemmisítés kezelésére szolgáló algoritmusra.

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

Paraméterek

workerThreads
Int32

A szálkészlet által igény szerint létrehozott munkaszálak minimális száma.

completionPortThreads
Int32

A szálkészlet által igény szerint létrehozott aszinkron I/O-szálak minimális száma.

Válaszok

trueha a módosítás sikeres; egyéb esetben. false

Példák

Az alábbi példa a munkaszálak minimális számát négyre állítja, és megőrzi az aszinkron I/O-befejezési szálak minimális számának eredeti értékét.

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

Megjegyzések

Ez a módszer nem támogatott, ha a Windows szálkészlet a .NET szálkészlet helyett használható. További információ: Windows szálkészlet konfigurációs beállítása.

A szálkészlet igény szerint új feldolgozószálakat vagy I/O-befejezési szálakat biztosít, amíg el nem éri az egyes kategóriákhoz tartozó minimális értéket. A minimális érték elérésekor a szálkészlet további szálakat hozhat létre ebben a kategóriában, vagy megvárhatja, amíg egyes feladatok befejeződnek. A .NET Framework 4-től kezdve a szálkészlet létrehozza és megsemmisíti a szálakat az átviteli sebesség optimalizálása érdekében, amely az időegységenként elvégzett tevékenységek számaként van definiálva. Előfordulhat, hogy túl kevés szál nem használja ki optimálisan a rendelkezésre álló erőforrásokat, míg a túl sok szál növelheti az erőforrás-versengést.

Alacsony igény esetén a szálkészlet szálainak tényleges száma a minimális értékek alá eshet.

Ha negatív számot vagy nagyobb számot ad meg, mint az aktív szálkészlet szálainak maximális száma (amelyet a rendszer a használatával GetMaxThreadsszerez be), SetMinThreads akkor false a függvény a minimális értékek egyikét sem módosítja.

Alapértelmezés szerint a szálak minimális száma a processzorszámra van állítva. A SetMinThreads szálak minimális számát növelheti, például ideiglenesen megkerülheti azokat a problémákat, amelyekben egyes várólistás munkaelemek vagy feladatok blokkolják a szálkészlet szálait. Ezek a blokkolások néha olyan helyzethez vezetnek, amikor az összes feldolgozó vagy I/O befejezési szál le van tiltva (éhezés). A szálak minimális számának növelése azonban más módokon is ronthatja a teljesítményt, például:

  • A szálkészlet több munkaszálat ütemezhet, még akkor is, ha a munkaszálak nem lesznek blokkolva. A túljelentkezés miatt az ütemezetten kiütemezett szálak jelentősen késleltetve lesznek, mivel egy hosszú üzenetsoron várakozva újabb időszeletet kapnak, ami késleltet néhány munkaelemet vagy feladatot.
  • A munkaszálak több processzoridőt is igénybe vehetnek a munkaelemek lekérdezése során, mivel több szálat kell beolvasniuk, hogy munkát lopjanak el.
  • A szálak közötti környezetváltás növelheti a processzorhasználatot.
  • A szemétgyűjtés több processzoridőt vehet igénybe a szálverem-séta során.
  • A folyamat több memóriát is igénybe vehet.

Figyelmeztetés

SetMinThreads A szálak minimális számának növeléséhez használt módszer teljesítményproblémákat okozhat az előző szövegben leírtak szerint. A legtöbb esetben a szálkészlet a saját algoritmusával jobban teljesít a szálak kiosztásához. A processzorok számánál kisebbre csökkentése szintén ronthatja a teljesítményt.

A következőre érvényes:

Lásd még