ThreadPool.SetMinThreads(Int32, Int32) Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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.