Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 26065|Svare: 2

[Kilde] En kort analyse av bruken av .net/C#-trådpoolen ThreadPool

[Kopier lenke]
Publisert på 21.06.2017 09:43:20 | | | |
Hva er en trådpool? Hvorfor bruke trådpooler? Hvordan bruke trådpooler?

1. Hva er en trådpool?

        .NET Frameworks ThreadPool-klasse tilbyr en trådpool som kan brukes til å utføre oppgaver, sende arbeidselementer, håndtere asynkron I/O, vente på vegne av andre tråder og håndtere timere. Så hva er en trådpool? Trådpoolen er faktisk en "pool" som lagrer trådobjekter, og den tilbyr noen grunnleggende metoder, som å sette minimum/maksimum antall tråder i poolen, sette metodene i kø som skal kjøres, osv. ThreadPool er en statisk klasse, så den kan brukes direkte uten å opprette objekter.

2. Hvorfor bruke trådpooler? Hva er fordelene?

        Microsofts offisielle nettside sier følgende: Mange applikasjoner lager et stort antall tråder som er i dvale og venter på at hendelser skal skje. Det finnes også mange tråder som kan gå i dvale bare for å våkne opp med jevne mellomrom for å spørre om endret eller oppdatert tilstandsinformasjon. Trådpooler, som lar deg bruke tråder mer effektivt gjennom en pool av arbeidertråder administrert av systemet.

        For å si det enkelt, hver ny tråd må oppta minneplass og andre ressurser, og med så mange nye tråder er mange av dem inaktive eller venter på at ressurser skal slippes. Det finnes mange tråder som bare gjør litt småarbeid periodisk, som å oppdatere data osv., som er for sløsende til å tegne, og det er sjeldent at et stort antall tråder bryter ut i faktisk programmering og så avsluttes på kort tid. Derfor ble konseptet trådpooler foreslått. Hvis applikasjonen sender en ny forespørsel til trådpoolen, aktiveres tråden i ventende tilstand og kjører oppgaven uten å opprette en ny tråd, noe som sparer mye overhead. Systemet vil automatisk ødelegge tråder bare når antall tråder når det maksimale antallet tråder. Derfor kan bruk av trådpooler unngå store kostnader for opprettelse og ødeleggelse, gi bedre ytelse og stabilitet, og for det andre kan utviklere fokusere på andre oppgaver ved å overlate tråder til systemadministrasjonen.


3. Hvordan bruker jeg trådpooler?

Faktisk er trådpooler veldig enkle å bruke, som følger

a. Sett maksimal og minimal trådpool:

ThreadPool.SetMaxThreads (int workerThreads,int completionPortThreads)
Sett antall forespørsler for en pool av tråder som kan være aktive samtidig. Alle forespørsler større enn dette tallet vil forbli i kø til trådpooltråden blir tilgjengelig. Du kan også sette minimum antall tråder.

b. Legg til oppgaver i trådpoolen:

ThreadPool.QueueUserWorkItem(ny WaitCallback(metodenavn));

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

For eksempel, hvis maksimalt 5 tråder i trådpoolen kjører en metode 60 ganger, er den totale lønnen for 5 år som følger:



Hvis du ikke bruker trådpooling, kan det hende du må åpne 60 tråder for å kjøre Run()-metoden asynkront, noe som er bortkastet plassressurser. Nå bruker vi opptil 5 tråder, som kan kjøres på 1 sekund, og effektiviteten og ytelsen er veldig god.





Foregående:Baidu-kart fullskjermkode (div fullskjermkode)
Neste:Alibaba Clouds ulovlige URL-blokkering av tilgangsbehandlingsvarsel
 Vert| Publisert på 21.06.2017 09:47:12 |

Trådpooler har disse fordelene:

1. I multitråding kan trådpoolen redusere antall tråder vi oppretter, og på en rimelig måte gjenbruke trådene i trådpoolen. Fordi tråder med tråder i trådpoolen er i en tilstand hvor de venter på å bli tildelt.

2. Det er ikke nødvendig å administrere og vedlikeholde tråder med kort levetid, ingen grunn til å tildele ressurser til dem når de opprettes, og frigi ressurser etter at de har fullført oppgavene sine.

3. Trådpoolen vil optimalisere trådene i poolen i henhold til dagens systemegenskaper.

Ulemper med trådpooler:

Etter at vi har overlevert oppgaven til trådpoolen for å fullføre, kan vi ikke kontrollere trådens prioritet, sette noen navn på trådene og annen informasjon. [Men vi kan legge til et lag for å forbedre dette før vi legger det i trådpoolen]

Publisert på 06.12.2017 11:28:49 |
det først, så du kan lære det senere
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com