Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 26065|Vastaus: 2

[Lähde] Lyhyt analyysi .net/C# thread pool ThreadPoolin käytöstä

[Kopioi linkki]
Julkaistu 21.6.2017 9.43.20 | | | |
Mikä on thread pool? Miksi käyttää lankapoolia? Miten käyttää lankapoolia?

1. Mikä on lankapooli?

        .NET Frameworkin ThreadPool-luokka tarjoaa säikepoolin, jota voidaan käyttää tehtävien suorittamiseen, työkohteiden lähettämiseen, asynkronisen I/O:n käsittelyyn, muiden säikeiden odotteluun ja ajastimien käsittelyyn. Mikä siis on thread pool? Säiepooli on itse asiassa "pooli", joka tallentaa säikeobjektit, ja se tarjoaa perusmenetelmiä, kuten altaan minimi- ja maksimisäikeiden määrän asettamisen, suoritettavien metodien jonottamisen jne. ThreadPool on staattinen luokka, joten sitä voi käyttää suoraan ilman objektien luomista.

2. Miksi käyttää lankapoolia? Mitkä ovat hyödyt?

        Microsoftin virallinen verkkosivusto sanoo seuraavaa: Monet sovellukset luovat suuren määrän säikeitä, jotka ovat lepotilassa odottaen tapahtumia. On myös monia ketjuja, jotka saattavat mennä horrokseen vain herätääkseen ajoittain ja tarkistaakseen muuttuneita tai päivitettyjä osavaltiotietoja. Thread poolit, jotka mahdollistavat säikeiden tehokkaamman käytön järjestelmän hallinnoiman työntekijäsäikeiden poolin kautta.

        Yksinkertaisesti sanottuna jokaisen uuden säikeen täytyy täyttää muistitilaa ja muita resursseja, ja kun uusia säikeitä on niin paljon, monet niistä ovat lepotilassa tai odottavat resurssien vapautumista. On monia säikeitä, jotka tekevät vain pieniä töitä ajoittain, kuten datan päivittämistä jne., jotka ovat liian tuhlaavia piirtää, ja on harvinaista, että suuri määrä säikeitä puhkeaa varsinaisessa ohjelmoinnissa ja päättyy lyhyessä ajassa. Tästä syystä ehdotettiin lankapoolien käsitettä. Jos sovellus tekee uuden pyynnön säiepoolille, odotustilassa oleva säie aktivoituu ja suorittaa tehtävän luomatta uutta säikettä, mikä säästää paljon ylikuormaa. Järjestelmä tuhoaa säikeet automaattisesti vasta, kun säikeiden määrä saavuttaa maksimisäikeiden määrän. Siksi säiepoolien käyttö voi välttää suuret luonti- ja tuhoamiskustannukset, parantaa suorituskykyä ja vakautta, ja toiseksi kehittäjät voivat keskittyä muihin tehtäviin siirtämällä säikeitä järjestelmänhallinnalle.


3. Miten käytän lankapoolia?

Itse asiassa lankapoolit ovat hyvin helppokäyttöisiä, kuten seuraava

a. Aseta maksimi- ja minimisäiepooli:

ThreadPool.SetMaxThreads (int workerThreads, int completionPortThreads)
Aseta pyyntöjen määrä säikeiden poolille, jotka voivat olla aktiivisia samanaikaisesti. Kaikki tämän numeron suuremmat pyynnöt pysyvät jonossa, kunnes säiepoolin säie tulee saataville. Voit myös asettaa säikeiden minimimäärän.

b. Lisää tehtäviä säikepooliin:

ThreadPool.QueueUserWorkItem(uusi WaitCallback(metodin nimi));

tai
ThreadPool.QueueUserWorkItem(uusi WaitCallback(metodin nimi), parametri);

Esimerkiksi, jos enintään 5 säikettä säikepoolissa suorittaa menetelmän 60 kertaa, viiden vuoden kokonaispalkka on seuraava:



Jos et käytä säikeiden poolausta, saatat joutua avaamaan 60 säikettä suorittaaksesi Run()-metodin asynkronisesti, mikä on tilan hukkaa. Nyt käytämme jopa 5 säikettä, jotka voidaan suorittaa sekunnissa, ja tehokkuus sekä suorituskyky ovat erittäin hyvät.





Edellinen:Baidu Map Full Screen Code (div full screen code)
Seuraava:Alibaba Cloudin laiton URL-eston käsittelyilmoitus
 Vuokraisäntä| Julkaistu 21.6.2017 9.47.12 |

Säiepooleilla on nämä edut:

1. Monisäikeisessä säikeiden allas voi vähentää luomiemme säikeiden määrää ja järkevästi käyttää säikeitä uudelleen. Koska säikeet, joiden säikeet ovat säiepoolissa, ovat tilassa, jossa ne odottavat määrittelyä.

2. Ei ole tarvetta hallita ja ylläpitää lyhytikäisiä säikeitä, ei tarvitse varata resursseja niille niiden luomisen yhteydessä ja vapauttaa resursseja tehtävien suorittamisen jälkeen.

3. Säiepooli optimoi poolin säikeet nykyisten järjestelmän ominaisuuksien mukaisesti.

Lankapoolien haittoja:

Kun luovutamme tehtävän säikepoolille suoritettavaksi, emme voi hallita säikeen prioriteettia, asettaa säikeiden nimiä tai muuta tietoa. [Mutta voimme lisätä kerroksen tämän tarkentamiseen ennen kuin laitamme sen lankapooliin]

Julkaistu 6.12.2017 11.28.49 |
Merkitse se ensin, niin opit myöhemmin
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com