Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 26065|Válasz: 2

[Forrás] Rövid elemzés a .net/C# szál pool ThreadPool használatáról

[Linket másol]
Közzétéve 2017. 06. 21. 9:43:20 | | | |
Mi az a szál pool? Miért használunk szálas medencéket? Hogyan lehet használni a szálakat a medencéket?

1. Mi az a szál pool?

        A .NET Framework ThreadPool osztálya egy szálkészletet biztosít, amellyel feladatokat lehet végrehajtani, munkaelemek küldésére használni, aszinkron I/O kezelésére, más szálak megbízására várakozni, és időzítők kezelésére. Szóval mi az a szál pool? A szálpool valójában egy "pool", amely tárolja a szálobjektumokat, és néhány alapvető módszert kínál, például a poolban lévő szálok minimális/maximális számának beállítását, a futtatandó metódusok sorba állítását, stb. A ThreadPool statikus osztály, így közvetlenül használható objektumok létrehozása nélkül.

2. Miért használunk szálmedencét? Mik az előnyei?

        A Microsoft hivatalos weboldala a következőket mondja: Sok alkalmazás sok szálat hoz létre, amelyek aludnak, várva az eseményekre. Sok szál is előfordulhat, hogy hibernációba kerülhet, csak hogy időnként felébredjenek, és megváltozott vagy frissített állapotinformációkat keressenek. Thread poolok, amelyek lehetővé teszik, hogy hatékonyabban használd a szálakat a rendszer által kezelt munkafonalmok keretében.

        Egyszerűen fogalmazva, minden új szálnak memóriateret és egyéb erőforrásokat kell elfoglalnia, és ennyi új szál miatt sok van vagy szunnyadó vagy várja az erőforrások megjelenését. Sok szál csak időnként végez kisebb munkát, például adatfrissítést stb., amelyek túl pazarló a rajzoláshoz, és ritka, hogy sok szál tör ki a tényleges programozásban, majd rövid idő alatt véget ér. Ezért javasolták a szálpoolok fogalmát. Ha az alkalmazás újabb kérést tesz a szál poolhoz, a függőben lévő szál aktiválódik, és végrehajtja a feladatot anélkül, hogy új szálat hozna létre, ami sok költséget takarít meg. A rendszer automatikusan megsemmisíti a szálakat, amikor a szálak száma eléri a maximális szálszámot. Ezért a szálpoolok használata elkerülheti a nagy létrehozási és megsemmisítési költségeket, jobb teljesítményt és stabilitást biztosít, másodszor pedig a fejlesztők más feladatokra koncentrálhatnak, és átadhatják a szálakat a rendszermenedzsmentnek.


3. Hogyan használom a szálakat a medencéket?

Valójában a szál poolok használata nagyon egyszerű, alábbiak szerint

a. Állítsuk be a maximális és minimális szálkészletet:

ThreadPool.SetMaxThreads (int workerThreads,int completionPortThreads)
Állítsuk be a kérések számát egy egyszerre aktív szálkészlethez. Minden ilyen számnál nagyobb kérés sorban marad, amíg a thread pool szál elérhetővé nem válik. Be is állíthatod a minimális szálszámot.

b. Feladatok hozzáadása a szálkészlethez:

ThreadPool.QueueUserWorkItem(új WaitCallback(metódus név));

vagy
ThreadPool.QueueUserWorkItem(új WaitCallback(metódusnév), paraméter);

Például, ha a szál poolban legfeljebb 5 szál hajt végre egy módszert 60-szor, akkor az 5 év teljes fizetése a következő:



Ha nem használod a thread poolinget, lehet, hogy 60 szálat kell nyitnod ahhoz, hogy aszinkron módon végrehajtsd a Run() metódusot, ami helyes erőforrás-pazarlás. Most akár 5 szálat is használunk, amelyeket 1 másodperc alatt lehet végrehajtani, és a hatékonyság és a teljesítmény nagyon jó.





Előző:Baidu Map teljes képernyős kód (div teljes képernyős kód)
Következő:Az Alibaba Cloud illegális URL-blokkolási értesítése a hozzáférési feldolgozásról
 Háziúr| Közzétéve 2017. 06. 21. 9:47:12 |

A szál poolok ilyen előnyökkel rendelkeznek:

1. Többszálas kezelésben a szálpool csökkentheti a generált szálok számát, és ésszerűen újrahasznosíthatja a szálakat a szálpoolban. Mert a szálak a szálak a szál poolban vannak, várakozási állapotban vannak a hozzárendelésre.

2. Nincs szükség a rövid élettartamú szálak kezelésére és karbantartására, nincs szükség erőforrások elosztására a létrehozásukkor, és az erőforrások felszabadítása a feladatok befejezése után.

3. A szálpool optimalizálja a szálakat a jelenlegi rendszer jellemzői szerint.

A szálmedencék hátrányai:

Miután átadtuk a feladatot a szál poolnak a befejezésre, nem tudjuk szabályozni a szál prioritását, beállítani néhány szálnevet és egyéb információkat. [De hozzáadhatunk egy réteget, hogy finomítsuk, mielőtt a szál medencéjébe tennénk]

Közzétéve 2017. 12. 06. 11:28:49 |
Először jelöld meg, hogy később tanulhass
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com