Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 26065|Atsakyti: 2

[Šaltinis] Trumpa .net/C# gijų telkinio "ThreadPool" naudojimo analizė

[Kopijuoti nuorodą]
Paskelbta 2017-06-21 09:43:20 | | | |
Kas yra siūlų baseinas? Kodėl verta naudoti siūlų baseinus? Kaip naudoti siūlų baseinus?

1. Kas yra siūlų baseinas?

        .NET Framework ThreadPool klasė suteikia gijų telkinį, kurį galima naudoti užduotims vykdyti, darbo elementams siųsti, asinchroniniams I/O tvarkyti, laukti kitų gijų vardu ir tvarkyti laikmačius. Taigi, kas yra siūlų baseinas? Gijų telkinys iš tikrųjų yra "telkinys", kuriame saugomi gijų objektai, ir jame pateikiami keli pagrindiniai metodai, pvz., minimalaus/maksimalaus gijų skaičiaus telkinyje nustatymas, vykdytinų metodų eilė ir kt. "ThreadPool" yra statinė klasė, todėl ją galima naudoti tiesiogiai, nekuriant objektų.

2. Kodėl verta naudoti siūlų baseinus? Kokia nauda?

        Oficialioje "Microsoft" svetainėje sakoma: Daugelis programų sukuria daugybę miego gijų, laukiančių, kol įvyks įvykiai. Taip pat yra daug gijų, kurios gali pereiti į užmigdymo režimą, kad periodiškai pabustų ir apklaustų pasikeitusią ar atnaujintą būsenos informaciją. Gijų telkiniai, leidžiantys efektyviau naudoti gijas per sistemos valdomų darbininkų gijų telkinį.

        Paprasčiau tariant, kiekviena nauja gija turi užimti atminties vietą ir kitus išteklius, o turint tiek daug naujų gijų, daugelis jų neveikia arba laukia, kol ištekliai bus išleisti. Yra daug gijų, kurios periodiškai atlieka tik nedidelį darbą, pvz., atnaujina duomenis ir pan., kurios yra pernelyg švaistomos, ir retai kada daug gijų išsiveržia programuojant ir baigiasi per trumpą laiką. Todėl buvo pasiūlyta siūlų baseinų koncepcija. Jei programa pateikia kitą užklausą gijų telkiniui, laukianti gija suaktyvinama ir vykdo užduotį nesukurdama naujos gijos, o tai sutaupo daug papildomų išlaidų. Sistema automatiškai sunaikins siūlus tik tada, kai gijų skaičius pasieks maksimalų gijų skaičių. Todėl naudojant gijų telkinius galima išvengti didelių kūrimo ir sunaikinimo išlaidų, geresnio našumo ir stabilumo, antra, kūrėjai gali sutelkti dėmesį į kitas užduotis, perduodami gijas sistemos valdymui.


3. Kaip naudoti siūlų fondus?

Tiesą sakant, siūlų baseinus naudoti labai paprasta

a. Nustatykite didžiausią ir mažiausią gijų telkinį:

ThreadPool.SetMaxThreads (int workerThreads,int completionPortThreads)
Nustatykite vienu metu aktyvių gijų telkinio užklausų skaičių. Visos užklausos, didesnės už šį skaičių, liks eilėje, kol bus prieinama gijų telkinio gija. Taip pat galite nustatyti minimalų siūlų skaičių.

b. Įtraukite užduotis į gijų telkinį:

ThreadPool.QueueUserWorkItem(naujas WaitCallback(metodo pavadinimas));

arba
ThreadPool.QueueUserWorkItem(naujas WaitCallback(metodo pavadinimas), parametras);

Pavyzdžiui, jei ne daugiau kaip 5 gijų telkinyje metodas vykdomas 60 kartų, bendras atlyginimas per 5 metus yra toks:



Jei nenaudojate gijų telkimo, gali tekti atidaryti 60 gijų, kad asinchroniškai vykdytumėte Run() metodą, o tai yra vietos išteklių švaistymas. Dabar naudojame iki 5 gijų, kurias galima įvykdyti per 1 sekundę, o efektyvumas ir našumas yra labai geri.





Ankstesnis:"Baidu" žemėlapio viso ekrano kodas (div viso ekrano kodas)
Kitą:"Alibaba Cloud" pranešimas apie neteisėtą URL blokavimą
 Savininkas| Paskelbta 2017-06-21 09:47:12 |

Siūlų baseinai turi šiuos privalumus:

1. Naudojant kelių gijų, gijų telkinys gali sumažinti mūsų sukurtų gijų skaičių ir pagrįstai pakartotinai naudoti gijų telkinyje. Kadangi gijos su gijomis gijų telkinyje laukia, kol bus priskirtos.

2. Nereikia valdyti ir prižiūrėti trumpos trukmės gijų, nereikia joms skirti išteklių, kai jos kuriamos, ir išleisti išteklius atlikus užduotis.

3. Siūlų telkinys optimizuos gijas baseine pagal dabartines sistemos charakteristikas.

Siūlų baseinų trūkumai:

Perdavę užduotį gijų telkiniui, negalime kontroliuoti gijos prioriteto, nustatyti kai kurių gijų pavadinimų ir kitos informacijos. [Bet mes galime pridėti sluoksnį, kad patobulintume tai prieš įdėdami jį į gijų baseiną]

Paskelbta 2017-12-06 11:28:49 |
Pirmiausia pažymėkite jį, kad galėtumėte mokytis vėliau
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com