See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 26065|Vastuse: 2

[Allikas] Lühike analüüs .net/C# lõimepooli kasutamisest ThreadPool

[Kopeeri link]
Postitatud 21.06.2017 09:43:20 | | | |
Mis on niidipool? Miks kasutada niidibasseine? Kuidas kasutada niidi poole?

1. Mis on niidikogu?

        .NET raamistiku ThreadPool klass pakub lõimede basseini, mida saab kasutada ülesannete täitmiseks, tööülesannete saatmiseks, asünkroonse I/O haldamiseks, teiste lõimede nimel ootamiseks ja taimerite käsitlemiseks. Mis siis on niidipool? Lõimede pooli on tegelikult "bassein", mis salvestab lõimeobjektid ning pakub mõningaid põhimeetodeid, näiteks minimaalse/maksimaalse lõimede arvu määramist basseinis, käivitatavate meetodite järjekorda panemist jne. ThreadPool on staatiline klass, seega saab seda kasutada otse ilma objekte loomata.

2. Miks kasutada niidikogusid? Millised on selle eelised?

        Microsofti ametlik veebileht ütleb järgmist: Paljud rakendused loovad suure hulga lõime, mis on unes ja ootavad sündmuste toimumist. On ka palju teemasid, mis võivad minna talveunne, et aeg-ajalt ärgata ja küsida muudetud või uuendatud osariigi infot. Lõimede basseinid, mis võimaldavad lõime tõhusamalt kasutada süsteemi hallatavate töölõimede kaudu.

        Lihtsalt öeldes peab iga uus lõim hõivama mäluruumi ja muid ressursse ning nii paljude uute lõimede tõttu on paljud neist uinunud või ootavad ressursside vabastamist. On palju lõime, mis teevad perioodiliselt vaid väikest tööd, näiteks andmete värskendamine jne, mis on liiga raiskav joonistada, ning harva juhtub, et päris programmeerimises tekib suur hulk lõime ja lõpeb lühikese ajaga. Seetõttu pakuti välja lõimebasseinide kontseptsioon. Kui rakendus teeb lõimepoolile uue päringu, aktiveeritakse ootel olekus olev lõim ja see käivitab ülesande ilma uut lõime loomata, mis säästab palju lisakoormust. Süsteem hävitab lõimed automaatselt alles siis, kui lõimede arv jõuab maksimaalse lõimede arvuni. Seetõttu aitab lõimede poolide kasutamine vältida suuri loomise ja hävitamise kulusid, pakkuda paremat jõudlust ja stabiilsust ning teiseks saavad arendajad keskenduda teistele ülesannetele, andes lõimed üle süsteemihaldusele.


3. Kuidas ma kasutan niidikogusid?

Tegelikult on niidipoolid väga lihtsad kasutada, nagu järgmised

a. Sea maksimaalne ja minimaalne lõimede hulk:

ThreadPool.SetMaxThreads (int workerThreads, int completionPortThreads)
Määra taotluste arv lõimede kogumile, mis võib olla samaaegselt aktiivne. Kõik taotlused, mis on suuremad kui see number, jäävad järjekorda kuni lõimepooli lõim muutub kättesaadavaks. Saad määrata ka minimaalse lõimede arvu.

b. Lisa ülesanded lõimede basseini:

ThreadPool.QueueUserWorkItem(uus WaitCallback(metoodi nimi));

või
ThreadPool.QueueUserWorkItem(uus WaitCallback(meetodi nimi), parameeter);

Näiteks, kui maksimaalselt 5 lõime lõime kogus täidab meetodi 60 korda, on 5 aasta kogupalk järgmine:



Kui sa ei kasuta lõimede kogumist, võib juhtuda, et pead avama 60 lõime, et Run() meetodit asünkroonselt käivitada, mis on ruumi raiskamine. Nüüd kasutame kuni 5 lõime, mida saab käivitada ühe sekundiga, ning efektiivsus ja jõudlus on väga head.





Eelmine:Baidu kaardi täisekraanikood (div täisekraanikood)
Järgmine:Alibaba Cloudi ebaseadusliku URL-i blokeerimise teade juurdepääsu töötlemise kohta
 Üürileandja| Postitatud 21.06.2017 09:47:12 |

Niidibasseinidel on järgmised eelised:

1. Mitme lõimega töötlemisel saab lõimede kogum vähendada loodud lõimede arvu ja mõistlikult taaskasutada lõimede kogumisi. Sest lõimed, mille lõimed on lõimebasseinis, ootavad määramist.

2. Pole vaja hallata ja hooldada lühikest eluiga lõime, ei ole vaja neile ressursse eraldada nende loomisel ning vabastada ressursse pärast ülesannete täitmist.

3. Lõimede pool optimeerib grupi lõimed vastavalt kehtivatele süsteemi omadustele.

Niidibasseinide puudused:

Pärast ülesande üleandmist lõimepooli lõpetamiseks ei saa me kontrollida lõime prioriteeti, määrata lõimede nimesid ega muud teavet. [Aga me võime lisada kihi, et seda lihvida, enne kui paneme selle lõimepooli]

Postitatud 06.12.2017 11:28:49 |
Märgi see esmalt, et saaksid hiljem õppida
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com