.NET 4 inkluderer et nytt navnerom, System.Threading.Tasks, som inneholder klasser som abstraherer trådfunksjonalitet. Bruk ThreadPool i bakgrunnen. En oppgave representerer arbeidet til en enhet som bør fullføres. Arbeidet til denne enheten kan kjøres i en separat tråd, eller en oppgave kan startes synkront, noe som krever venting på hovedinnstillingstråden. Å bruke oppgaver gir deg ikke bare et abstraksjonslag, men også mye kontroll over de underliggende trådene. Oppgaver gir mye fleksibilitet når det gjelder å planlegge arbeidet som må gjøres. For eksempel kan du definere en kontinuerlig oppgave – hvilket arbeid som skal gjøres etter at en oppgave er fullført. Dette kan utgjøre forskjellen mellom en vellykket oppgave og ikke. I tillegg kan oppgaver ordnes i et hierarki. For eksempel kan en foreldreoppgave opprette en ny barneoppgave. Dette skaper en avhengighet slik at hvis du avbryter foreldreoppgaven, vil også dens barneoppgave bli kansellert.
I dag er det populært å bruke metoder for oppgaveutførelse, og det er høyytelse, og jeg vet ikke hvor oppgaveytelsen ligger.
Jeg testet Task og Thread selv, og jeg føler at Task er veldig treg, noe som i stor grad påvirker ytelsen, og testkoden er som følger:
Vi går gjennom metoden 1000 ganger, og så blokkerer metoden i 100 millisekunder, og testresultatet er som følger:
Utfall:
Trådkjøringen tar 188 millisekunder
Oppgaveutførelsen tar 14 671 millisekunder
Hastighetsforskjellen mellom de to er 78 ganger!!
Oppgaven er veldig treg, jeg vet ikke hvorfor dette skjer, er det noe galt med testkoden min, eller hva? Jeg håper du kan forklare hvorfor dette skjer...
|