Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 26065|Odgovoriti: 2

[Vir] Kratka analiza uporabe .net/C# thread pool ThreadPool

[Kopiraj povezavo]
Objavljeno na 21. 06. 2017 09:43:20 | | | |
Kaj je thread pool? Zakaj uporabljati niti bazene? Kako uporabljati niti bazene?

1. Kaj je nitni bazen?

        Razred ThreadPool v .NET Frameworku zagotavlja nabor niti, ki se lahko uporablja za izvajanje nalog, pošiljanje delovnih elementov, upravljanje asinhronih vhodno/izhodnih podatkov, čakanje v imenu drugih niti in upravljanje časovnikov. Kaj torej je thread pool? Bazen niti je pravzaprav "bazen", ki shranjuje objekte niti in ponuja nekatere osnovne metode, kot so nastavitev minimalnega/največjega števila niti v skladu, vrstne vrste metod, ki se izvajajo itd. ThreadPool je statični razred, zato ga je mogoče uporabljati neposredno brez ustvarjanja objektov.

2. Zakaj uporabljati niti bazene? Kakšne so prednosti?

        Uradna Microsoftova spletna stran navaja naslednje: Veliko aplikacij ustvari veliko število niti, ki so v stanju mirovanja in čakajo, da se dogodki zgodijo. Obstaja tudi veliko tem, ki lahko preidejo v hibernacijo samo zato, da se občasno zbudijo in preverijo spremembe ali posodobljene informacije o stanju. Thread pooli, ki omogočajo učinkovitejšo uporabo niti prek bazena delovnih niti, ki jih upravlja sistem.

        Preprosto povedano, vsaka nova nit mora zasedati pomnilniški prostor in druge vire, in ker je toliko novih niti, jih je veliko neaktivnih ali čaka na sprostitev virov. Obstaja veliko niti, ki občasno opravijo le manjše delo, kot je osveževanje podatkov itd., kar je preveč potratno za risanje, in redko se zgodi, da veliko niti eksplodira v dejanskem programiranju in nato konča v kratkem času. Zato je bil predlagan koncept nitnih bazenov. Če aplikacija pošlje novo zahtevo v nabor niti, se nit v čakajočem stanju aktivira in izvede nalogo brez ustvarjanja nove niti, kar prihrani veliko obremenitve. Sistem bo samodejno uničil niti šele, ko število niti doseže največje število. Zato lahko uporaba nitnih bazenov prepreči velike stroške ustvarjanja in uničenja, zagotavlja boljšo zmogljivost in stabilnost, poleg tega pa se razvijalci lahko osredotočijo na druge naloge tako, da niti predajo upravljanju sistema.


3. Kako uporabljam niti bazene?

Pravzaprav so nitni bazeni zelo enostavni za uporabo, kot sledi

a. Nastavite največji in minimalni bazen niti:

ThreadPool.SetMaxThreads (int workerThreads,int completionPortThreads)
Nastavite število zahtevkov za nabor niti, ki so lahko aktivne hkrati. Vse zahteve, večje od te številke, ostanejo v vrsti, dokler nit bazena niti ne postane na voljo. Lahko tudi nastavite minimalno število niti.

b. Dodajte naloge v nabor niti:

ThreadPool.QueueUserWorkItem(novi WaitCallback(ime metode));

ali
ThreadPool.QueueUserWorkItem(nov WaitCallback(ime metode), parameter);

Na primer, če največ 5 niti v bazenu niti izvede metodo 60-krat, je skupna plača za 5 let naslednja:



Če ne uporabljaš združevanja niti, boš morda moral odpreti 60 niti, da lahko asinhrono izvedeš metodo Run(), kar je zapravljanje prostora. Zdaj uporabljamo do 5 niti, ki jih lahko izvedemo v 1 sekundi, učinkovitost in zmogljivost pa sta zelo dobri.





Prejšnji:Baidu Map koda za celozaslonski zaslon (div celozaslonska koda)
Naslednji:Obvestilo o nezakonitem URL-ju Alibaba Cloud, ki blokira dostop do obdelave
 Najemodajalec| Objavljeno na 21. 06. 2017 09:47:12 |

Thread pooli imajo te prednosti:

1. Pri večnitnem ustvarjanju lahko bazen niti zmanjša število niti, ki jih ustvarimo, in razumno ponovno uporabi niti v bazenu niti. Ker so niti z nitmi v bazenu niti v stanju čakanja na dodelitev.

2. Ni potrebe po upravljanju in vzdrževanju niti s kratko življenjsko dobo, ni potrebe, da bi jim ob ustvarjanju dodeljevali vire in jih sproščali po opravljenih nalogah.

3. Bazen niti bo optimiziral niti v bazenu glede na trenutne značilnosti sistema.

Slabosti niti bazenov:

Ko nalogo predamo v thread pool za dokončanje, ne moremo nadzorovati prioritete niti, nastaviti nekaterih imen niti in drugih informacij. [Lahko pa dodamo plast za izpopolnitev, preden jo damo v bazen niti]

Objavljeno na 6. 12. 2017 11:28:49 |
Označi najprej, da se lahko kasneje naučiš
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com