Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 26065|Odpoveď: 2

[Zdroj] Stručná analýza používania .net/C# vláknového poolu ThreadPool

[Kopírovať odkaz]
Zverejnené 21. 6. 2017 9:43:20 | | | |
Čo je to thread pool? Prečo používať thread pools? Ako používať thread pooly?

1. Čo je to pool vlákien?

        Trieda ThreadPool v .NET Frameworku poskytuje pool vlákien, ktorý možno použiť na vykonávanie úloh, odosielanie pracovných položiek, spracovanie asynchrónnych I/O, čakanie v mene iných vlákien a spracovanie časovačov. Čo je to teda thread pool? Pool vlákien je vlastne "pool", ktorý ukladá objekty vlákien a poskytuje niektoré základné metódy, ako je nastavenie minimálneho/maximálneho počtu vlákien v poole, zaradenie metód na vykonanie a podobne. ThreadPool je statická trieda, takže ju možno používať priamo bez vytvárania objektov.

2. Prečo používať vláknové pooly? Aké sú výhody?

        Oficiálna webová stránka Microsoftu uvádza nasledovné: Mnohé aplikácie vytvárajú veľké množstvo vlákien, ktoré sú neaktívne a čakajú na udalosti. Existuje tiež veľa vlákien, ktoré môžu ísť do hibernácie len preto, aby sa pravidelne zobudili a zisťovali informácie o zmenenom alebo aktualizovanom stave. Pooly vlákien, ktoré umožňujú efektívnejšie využívať vlákna cez pool pracovných vlákien spravovaných systémom.

        Jednoducho povedané, každé nové vlákno musí zaberať pamäťový priestor a ďalšie zdroje, a s toľkými novými vláknami sú mnohé z nich neaktívne alebo čakajú na uvoľnenie zdrojov. Existuje mnoho vlákien, ktoré robia len občasnú malú prácu, ako je obnovovanie dát a podobne, čo je príliš plytvajúce na kreslenie, a je zriedkavé, aby veľké množstvo vlákien vybuchlo v skutočnom programovaní a skončilo v krátkom čase. Preto bol navrhnutý koncept thread pools. Ak aplikácia vykoná ďalšiu požiadavku do poolu vlákien, vlákno v čakajúcom stave sa aktivuje a vykoná úlohu bez vytvorenia nového vlákna, čo ušetrí veľa režijných nákladov. Systém automaticky zničí vlákna len vtedy, keď počet vlákien dosiahne maximálny počet. Preto používanie thread poolov môže zabrániť vysokým nákladom na vytváranie a ničenie, mať lepší výkon a stabilitu, a po druhé, vývojári sa môžu sústrediť na iné úlohy odovzdaním vlákien systémovému manažmentu.


3. Ako používať thread pools?

V skutočnosti sú vláknové pooly veľmi jednoduché na používanie, a to nasledovne

a. Nastavte maximálny a minimálny pool vlákien:

ThreadPool.SetMaxThreads (int workerThreads,int completionPortThreads)
Nastavte počet požiadaviek pre pool vlákien, ktoré môžu byť aktívne súčasne. Všetky požiadavky s vyšším ako týmto číslom zostanú v rade, kým vlákno poolu vlákien nebude dostupné. Môžete si tiež nastaviť minimálny počet vlákien.

b. Pridať úlohy do poolu vlákien:

ThreadPool.QueueUserWorkItem(nový WaitCallback(názov metódy));

alebo
ThreadPool.QueueUserWorkItem(nový WaitCallback(názov metódy), parameter);

Napríklad, ak maximálne 5 vlákien v poole vlákien vykoná metódu 60-krát, celkový plat za 5 rokov je nasledovný:



Ak nepoužívate pooling vlákien, možno budete musieť otvoriť 60 vlákien, aby ste mohli vykonať metódu Run() asynchrónne, čo je plytvanie miestom. Teraz používame až 5 vlákien, ktoré sa dajú spustiť za 1 sekundu, a efektivita aj výkon sú veľmi dobré.





Predchádzajúci:Baidu Map kód na celú obrazovku (kód divízie na celú obrazovku)
Budúci:Oznámenie o nelegálnej URL adrese Alibaba Cloud blokujúcej prístup pri spracovaní prístupu
 Prenajímateľ| Zverejnené 21. 6. 2017 9:47:12 |

Thread pooly majú tieto výhody:

1. Pri viacvláknovom procese môže pool vlákien znížiť počet vytvorených vlákien a rozumne ich znovu použiť. Pretože vlákna s vláknami v poole vlákien sú v stave čakania na priradenie.

2. Nie je potrebné spravovať a udržiavať vlákna s krátkou životnosťou, nie je potrebné im prideľovať zdroje pri ich vytvorení a uvoľňovať zdroje po splnení úloh.

3. Pool vlákien optimalizuje vlákna v poole podľa aktuálnych charakteristík systému.

Nevýhody thread poolov:

Po odovzdaní úlohy do poolu vlákien na dokončenie nemôžeme kontrolovať prioritu vlákna, nastaviť niektoré názvy vlákien a ďalšie informácie. [Ale môžeme pridať vrstvu na vylepšenie pred vložením do poolu vlákien]

Zverejnené 6. 12. 2017 11:28:49 |
Označ si to najskôr, aby si sa mohol neskôr naučiť
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com