Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 26065|Svar: 2

[Källa] En kort analys av användningen av .net/C#-trådpoolen ThreadPool

[Kopiera länk]
Publicerad på 2017-06-21 09:43:20 | | | |
Vad är en trådpool? Varför använda trådpooler? Hur använder man trådpooler?

1. Vad är en trådpool?

        .NET Frameworks ThreadPool-klass tillhandahåller en trådpool som kan användas för att utföra uppgifter, skicka arbetsobjekt, hantera asynkron I/O, vänta på andra trådar och hantera timers. Så vad är en trådpool? Trådpoolen är egentligen en "pool" som lagrar trådobjekt, och den tillhandahåller några grundläggande metoder, såsom att ställa in minsta/maxantal trådar i poolen, köa metoderna som ska köras, etc. ThreadPool är en statisk klass, så den kan användas direkt utan att skapa objekt.

2. Varför använda trådpooler? Vilka är fördelarna?

        Microsofts officiella webbplats säger följande: Många applikationer skapar ett stort antal trådar som är i vilande och väntar på att händelser ska inträffa. Det finns också många trådar som kan gå i viloläge bara för att vakna upp då och då för att polla efter ändrad eller uppdaterad statusinformation. Trådpooler, som gör att du kan använda trådar mer effektivt genom en pool av arbetstrådar som hanteras av systemet.

        Enkelt uttryckt måste varje ny tråd uppta minnesutrymme och andra resurser, och med så många nya trådar är många av dem vilande eller väntar på att resurser ska släppas. Det finns många trådar som bara gör lite småjobb periodvis, som att uppdatera data, etc., vilka är för slösaktiga att rita, och det är ovanligt att ett stort antal trådar bryter ut i faktisk programmering och sedan avslutas på kort tid. Därför föreslogs konceptet trådpooler. Om applikationen gör en ny förfrågan till trådpoolen aktiveras tråden i väntande tillstånd och kör uppgiften utan att skapa en ny tråd, vilket sparar mycket overhead. Systemet kommer automatiskt att förstöra trådar endast när antalet trådar når det maximala antalet trådar. Därför kan användning av trådpooler undvika stora kostnader för skapande och förstörelse, ge bättre prestanda och stabilitet, och för det andra kan utvecklare fokusera på andra uppgifter genom att överlämna trådar till systemhanteringen.


3. Hur använder jag trådpooler?

Faktum är att trådpooler är mycket enkla att använda, enligt följande

a. Sätt maximal och minimal trådpool:

ThreadPool.SetMaxThreads (int workerThreads,int completionPortThreads)
Sätt antalet förfrågningar för en pool av trådar som kan vara aktiva samtidigt. Alla förfrågningar större än detta antal kommer att förbli köade tills trådpooltråden blir tillgänglig. Du kan också ställa in minsta antal trådar.

b. Lägg till uppgifter i trådpoolen:

ThreadPool.QueueUserWorkItem(ny WaitCallback(metodnamn));

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

Till exempel, om maximalt 5 trådar i trådpoolen kör en metod 60 gånger, är den totala lönen under 5 år följande:



Om du inte använder trådpooling kan du behöva öppna 60 trådar för att köra Run()-metoden asynkront, vilket är slöseri med resurser. Nu använder vi upp till 5 trådar, som kan köras på 1 sekund, och effektiviteten och prestandan är mycket goda.





Föregående:Baidu-kartans fullskärmskod (div fullskärmskod)
Nästa:Alibaba Clouds olagliga URL-blockeringshandläggning
 Hyresvärd| Publicerad på 2017-06-21 09:47:12 |

Trådpooler har dessa fördelar:

1. Vid multitrådning kan trådpoolen minska antalet trådar vi skapar och rimligen återanvända trådarna i trådpoolen. För trådar med trådar i trådpoolen är i ett tillstånd av att vänta på att bli tilldelade.

2. Det finns inget behov av att hantera och underhålla trådar med kort livslängd, inget behov av att tilldela resurser till dem när de skapas, och frigöra resurser efter att de slutfört sina uppgifter.

3. Trådpoolen optimerar trådarna i poolen enligt de aktuella systemets egenskaper.

Nackdelar med trådpooler:

Efter att vi överlämnat uppgiften till trådpoolen för att slutföra den kan vi inte kontrollera trådens prioritet, sätta några namn på trådarna och annan information. [Men vi kan lägga till ett lager för att förfina detta innan vi lägger det i trådpoolen]

Publicerad på 2017-12-06 11:28:49 |
Markera det först, så att du kan lära dig senare
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com