Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 26065|Svar: 2

[Kilde] En kort analyse af brugen af .net/C# trådpuljen ThreadPool

[Kopier link]
Opslået på 21/06/2017 09.43.20 | | | |
Hvad er en trådpool? Hvorfor bruge trådpools? Hvordan bruger man trådpools?

1. Hvad er en trådpulje?

        .NET Frameworks ThreadPool-klasse tilbyder en trådpool, der kan bruges til at udføre opgaver, sende arbejdsopgaver, håndtere asynkron I/O, vente på vegne af andre tråde og håndtere timere. Så hvad er en trådpulje? Trådpoolen er faktisk en "pool", der gemmer trådobjekter, og den tilbyder nogle grundlæggende metoder, såsom at sætte minimums/maksimum antal tråde i poolen, kø for metoder, der skal udføres osv. ThreadPool er en statisk klasse, så den kan bruges direkte uden at oprette objekter.

2. Hvorfor bruge trådpools? Hvad er fordelene?

        Microsofts officielle hjemmeside siger følgende: Mange applikationer opretter et stort antal tråde, der er i dvale og venter på, at begivenheder skal finde sted. Der er også mange tråde, der kan gå i dvale bare for at vågne op med jævne mellemrum og spørge om ændret eller opdateret statusinformation. Trådpuljer, der gør det muligt at bruge tråde mere effektivt gennem en pulje af arbejdstråde, der administreres af systemet.

        For at sige det enkelt, skal hver ny tråd optage hukommelsesplads og andre ressourcer, og med så mange nye tråde er mange af dem inaktive eller venter på, at ressourcer frigives. Der er mange tråde, der kun laver lidt småt arbejde periodisk, såsom at opdatere data osv., som er for spildte at tegne, og det er sjældent, at et stort antal tråde bryder ud i faktisk programmering og så slutter på kort tid. Derfor blev konceptet trådpools foreslået. Hvis applikationen laver en ny anmodning til trådpoolen, aktiveres tråden i ventende tilstand og udfører opgaven uden at oprette en ny tråd, hvilket sparer meget overhead. Systemet vil automatisk ødelægge tråde først, når antallet af tråde når det maksimale antal tråde. Derfor kan brug af trådpools undgå store omkostninger til oprettelse og destruktion, give bedre ydeevne og stabilitet, og for det andet kan udviklere fokusere på andre opgaver ved at overlade tråde til systemadministrationen.


3. Hvordan bruger jeg trådpools?

Faktisk er trådpuljer meget simple at bruge, som følger

a. Sæt maksimal og minimal trådpulje:

ThreadPool.SetMaxThreads (int workerThreads,int completionPortThreads)
Indstil antallet af forespørgsler for en pulje af tråde, der kan være aktive samtidig. Alle anmodninger over dette antal forbliver i kø, indtil trådpooltråden bliver tilgængelig. Du kan også sætte det minimale antal tråde.

b. Tilføj opgaver til trådpuljen:

ThreadPool.QueueUserWorkItem(ny WaitCallback(metodenavn);

eller
ThreadPool.QueueUserWorkItem (ny WaitCallback(metodenavn), parameter);

For eksempel, hvis maksimalt 5 tråde i trådpuljen udfører en metode 60 gange, er den samlede løn for 5 år som følger:



Hvis du ikke bruger trådpooling, kan det være nødvendigt at åbne 60 tråde for at køre Run()-metoden asynkront, hvilket er spild af pladsressourcer. Nu bruger vi op til 5 tråde, som kan udføres på 1 sekund, og effektiviteten og ydeevnen er meget god.





Tidligere:Baidu Kort fuldskærmskode (div fuldskærmskode)
Næste:Alibaba Clouds ulovlige URL-blokeringsmeddelelse om adgangsbehandling
 Udlejer| Opslået på 21/06/2017 09.47.12 |

Trådpools har disse fordele:

1. I multi-tråding kan trådpuljen reducere antallet af tråde, vi opretter, og rimeligt genbruge trådene i trådpuljen. Fordi tråde med tråde i trådpuljen venter på at blive tildelt.

2. Der er ikke behov for at administrere og vedligeholde tråde med kort levetid, ingen grund til at tildele ressourcer til dem, når de oprettes, og frigive ressourcer, når de har fuldført deres opgaver.

3. Thread pool vil optimere trådene i poolen i henhold til de aktuelle systemkarakteristika.

Ulemper ved trådpools:

Efter vi har overdraget opgaven til trådpuljen, kan vi ikke kontrollere trådens prioritet, sætte nogle navne på trådene og andre oplysninger. [Men vi kan tilføje et lag for at forfine dette, før vi lægger det i trådpuljen]

Opslået på 06/12/2017 11.28.49 |
Markér det først, så du kan lære det senere
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com