Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 26065|Atbildi: 2

[Avots] Īsa analīze par .net/C# pavedienu pūla ThreadPool izmantošanu

[Kopēt saiti]
Publicēts 21.06.2017 09:43:20 | | | |
Kas ir pavedienu baseins? Kāpēc izmantot pavedienu baseinus? Kā lietot pavedienu baseinus?

1. Kas ir diegu baseins?

        .NET Framework ThreadPool klase nodrošina pavedienu kopu, ko var izmantot, lai izpildītu uzdevumus, nosūtītu darba vienumus, apstrādātu asinhronu I/O, gaidītu citu pavedienu vārdā un apstrādātu taimeri. Tātad, kas ir pavedienu baseins? Pavedienu kopums faktiski ir "baseins", kas glabā pavedienu objektus, un tas nodrošina dažas pamatmetodes, piemēram, minimālā/maksimālā pavedienu skaita iestatīšanu baseinā, izpildāmo metožu rindu utt. ThreadPool ir statiska klase, tāpēc to var izmantot tieši, neveidojot objektus.

2. Kāpēc izmantot diegu baseinus? Kādas ir priekšrocības?

        Microsoft oficiālajā tīmekļa vietnē teikts: Daudzas lietojumprogrammas izveido lielu skaitu pavedienu, kas atrodas miega režīmā, gaidot notikumus. Ir arī daudzi pavedieni, kas var nonākt ziemas guļā, lai periodiski pamostos, lai aptaujātu mainītu vai atjauninātu informāciju par stāvokli. Pavedienu kopas, kas ļauj efektīvāk izmantot pavedienus, izmantojot sistēmas pārvaldīto darbinieku pavedienu kopu.

        Vienkārši sakot, katram jaunam pavedienam ir jāaizņem atmiņas vieta un citi resursi, un ar tik daudz jaunu pavedienu, daudzi no tiem ir neaktīvi vai gaida resursu atbrīvošanu. Ir daudzi pavedieni, kas periodiski veic tikai nelielu darbu, piemēram, atsvaidzināt datus utt., Kas ir pārāk izšķērdīgi, lai zīmētu, un reti kad liels skaits pavedienu izplūst faktiskajā programmēšanā un pēc tam beidzas īsā laika periodā. Tāpēc tika ierosināts diegu baseinu jēdziens. Ja lietojumprogramma veic citu pieprasījumu pavedienu kopumam, gaidīšanas stāvoklī esošais pavediens tiek aktivizēts un izpilda uzdevumu, neizveidojot jaunu pavedienu, kas ietaupa daudz pieskaitāmo izdevumu. Sistēma automātiski iznīcinās pavedienus tikai tad, kad pavedienu skaits sasniegs maksimālo pavedienu skaitu. Tāpēc, izmantojot pavedienu baseinus, var izvairīties no lieliem izveides un iznīcināšanas izdevumiem, labāka veiktspēja un stabilitāte, un, otrkārt, izstrādātāji var koncentrēties uz citiem uzdevumiem, nododot pavedienus sistēmas vadībai.


3. Kā es varu izmantot pavedienu baseinus?

Patiesībā pavedienu baseini ir ļoti vienkārši lietojami, šādi

a. Iestatiet maksimālo un minimālo pavedienu kopumu:

ThreadPool.SetMaxThreads (int workerThreads,int completionPortThreads)
Iestatiet pieprasījumu skaitu pavedienu kopumam, kas var būt aktīvs vienlaikus. Visi pieprasījumi, kas lielāki par šo skaitu, paliks rindā, līdz pavedienu pūla pavediens kļūs pieejams. Varat arī iestatīt minimālo pavedienu skaitu.

b. Pievienojiet uzdevumus pavedienu kopumam:

ThreadPool.QueueUserWorkItem(jauns WaitCallback(metodes nosaukums));

vai
ThreadPool.QueueUserWorkItem(jauns WaitCallback(metodes nosaukums), parametrs);

Piemēram, ja ne vairāk kā 5 pavedieni pavedienu baseinā izpilda metodi 60 reizes, kopējā alga 5 gadiem ir šāda:



Ja neizmantojat pavedienu apvienošanu, iespējams, būs jāatver 60 pavedieni, lai asinhroni izpildītu Run() metodi, kas ir vietas resursu izšķiešana. Tagad mēs izmantojam līdz 5 pavedieniem, kurus var izpildīt 1 sekundē, un efektivitāte un veiktspēja ir ļoti laba.





Iepriekšējo:Baidu kartes pilnekrāna kods (div pilnekrāna kods)
Nākamo:Alibaba Cloud nelikumīgs URL bloķēšanas piekļuves apstrādes paziņojums
 Saimnieks| Publicēts 21.06.2017 09:47:12 |

Vītņu baseiniem ir šādas priekšrocības:

1. Vairāku pavedienu laikā pavedienu kopums var samazināt mūsu izveidoto pavedienu skaitu un saprātīgi atkārtoti izmantot pavedienus pavedienu kopā. Tā kā pavedieni ar pavedieniem pavedienu baseinā gaida piešķiršanu.

2. Nav nepieciešams pārvaldīt un uzturēt pavedienus ar īsu kalpošanas laiku, nav nepieciešams tiem piešķirt resursus, kad tie tiek izveidoti, un atbrīvot resursus pēc uzdevumu pabeigšanas.

3. Vītņu baseins optimizēs pavedienus baseinā atbilstoši pašreizējām sistēmas īpašībām.

Vītņu baseinu trūkumi:

Pēc tam, kad mēs nododam uzdevumu pavedienu kopumam, mēs nevaram kontrolēt pavediena prioritāti, iestatīt dažus pavedienu nosaukumus un citu informāciju. [Bet mēs varam pievienot slāni, lai to uzlabotu, pirms ievietojam to pavedienu baseinā]

Publicēts 06.12.2017 11:28:49 |
Vispirms atzīmējiet to, lai vēlāk varētu mācīties
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com