Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 26065|Odpověď: 2

[Zdroj] Stručná analýza využití .net/C# thread pool ThreadPool

[Kopírovat odkaz]
Zveřejněno 21.06.2017 9:43:20 | | | |
Co je to pool vláken? Proč používat thread pooly? Jak používat thread pooly?

1. Co je to pool vláken?

        Třída ThreadPool v .NET Frameworku poskytuje pool vláken, který lze použít k provádění úloh, odesílání pracovních položek, zpracování asynchronních I/O, čekání jménem ostatních vláken a řešení časovačů. Co je to tedy thread pool? Pool vláken je ve skutečnosti "pool", který ukládá objekty vláken a poskytuje základní metody, jako je nastavení minimálního/maximálního počtu vláken v poolu, frontování metod k vykonání atd. ThreadPool je statická třída, takže ji lze používat přímo bez vytváření objektů.

2. Proč používat thread pools? Jaké jsou výhody?

        Oficiální web Microsoftu uvádí následující: Mnoho aplikací vytváří velké množství vláken, která jsou v režimu spánku a čekají na události. Existuje také mnoho vláken, která mohou přejít do hibernace jen proto, aby se občas probudila a ptala se na změněné nebo aktualizované informace o stavu. Pooly vláken umožňují efektivněji využívat vlákna prostřednictvím poolu pracovních vláken spravovaných systémem.

        Jednoduše řečeno, každé nové vlákno musí zabírat paměťový prostor a další zdroje, a s tolika novými vlákny je mnoho z nich nečinných nebo čeká na uvolnění zdrojů. Existuje mnoho vláken, která dělají jen drobné práce periodicky, například obnovování dat apod., což je příliš zbytečné na kreslení, a je vzácné, aby velké množství vláken vybuchlo v reálném programování a skončilo během krátké doby. Proto byl navržen koncept thread poolů. Pokud aplikace odešle další požadavek na pool vláken, vlákno ve stavu čekajícího na vlákenku je aktivováno a úkol vykoná bez vytvoření nového vlákna, což šetří značnou zátěž. Systém automaticky zničí vlákna pouze tehdy, když počet vláken dosáhne maximálního počtu. Proto použití poolů vláken může předejít vysokým nákladům na tvorbu a depozici, zajistit lepší výkon a stabilitu, a za druhé se vývojáři mohou soustředit na jiné úkoly tím, že vlákna předají správci systému.


3. Jak používám thread pooly?

Ve skutečnosti jsou thread pooly velmi jednoduché na použití, a to následuje

a. Nastavte maximální a minimální pool vláken:

ThreadPool.SetMaxThreads (int workerThreads,int completionPortThreads)
Nastavte počet požadavků pro pool vláken, která mohou být aktivní současně. Všechny požadavky s vyšším než tímto číslem zůstanou ve frontě, dokud nebude vlákno poolu vláken dostupné. Můžete také nastavit minimální počet vláken.

b. Přidat úkoly do poolu vláken:

ThreadPool.QueueUserWorkItem(new WaitCallback(název metody));

nebo
ThreadPool.QueueUserWorkItem(nový WaitCallback(název metody), parametr);

Například pokud maximálně 5 vláken v poolu provede metodu 60krát, celkový plat za 5 let je následující:



Pokud nepoužíváte poolování vláken, možná budete muset otevřít 60 vláken, abyste mohli asynchronně spustit metodu Run(), což je plýtvání místem. Nyní používáme až 5 vláken, která lze spustit za 1 sekundu, a efektivita i výkon jsou velmi dobré.





Předchozí:Baidu mapa kód pro celou obrazovku (kód divize pro celou obrazovku)
Další:Oznámení o nelegální URL blokující přístup od Alibaba Cloud
 Pronajímatel| Zveřejněno 21.06.2017 9:47:12 |

Thread pooly mají tyto výhody:

1. Při vícevláknovém zpracování může pool vláken snížit počet vytvořených vláken a rozumně je znovu použít. Protože vlákna s vlákny v poolu jsou ve stavu čekání na přiřazení.

2. Není třeba spravovat a udržovat vlákna s krátkou životností, není třeba jim přidělovat zdroje při jejich vzniku a uvolňovat je po dokončení úkolů.

3. Vláknový bazén optimalizuje vlákna ve fondu podle aktuálních charakteristik systému.

Nevýhody thread poolů:

Poté, co úkol předáme do poolu vláken k dokončení, nemůžeme ovládat prioritu vlákna, nastavit některá jména vláken a další informace. [Ale můžeme přidat vrstvu, která to před vložením do poolu vláken upřesní]

Zveřejněno 06.12.2017 11:28:49 |
Označ si to nejdřív, abys se to později mohl naučit
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com