.NET 4 vključuje nov imenski prostor, System.Threading.Tasks, ki vsebuje razrede, ki abstrahirajo funkcionalnost niti. Uporabite ThreadPool v ozadju. Naloga predstavlja delo enote, ki ga je treba dokončati. Delo te enote se lahko izvaja v ločeni niti ali pa se naloga začne sinhrono, kar zahteva čakanje na glavno uglaševalno nit. Uporaba nalog vam ne daje le plasti abstrakcije, ampak tudi veliko nadzora nad osnovnimi nitmi. Naloge ponujajo veliko prilagodljivosti pri načrtovanju dela, ki ga je treba opraviti. Na primer, lahko določite neprekinjeno nalogo – kakšno delo je treba opraviti po zaključku naloge. To lahko naredi razliko med uspešnim in neuspešnim projektom. Poleg tega je mogoče naloge razporediti v hierarhijo. Na primer, nadrejeno opravilo lahko ustvari novo podrejeno nalogo. To ustvari odvisnost, tako da če prekličete nadrejeno nalogo, bo preklicana tudi njena podrejena naloga.
Danes je priljubljeno uporabljati metode izvajanja nalog, ki so visoko zmogljive, in ne vem, kje je zmogljivost naloge.
Sam sem preizkusil Task in Thread in menim, da je Task zelo počasen, kar močno vpliva na zmogljivost, testna koda pa je naslednja:
Metodo ponovimo 1000-krat, nato pa metoda blokira za 100 milisekund, rezultat testa pa je naslednji:
Rezultat:
Izvedba niti traja 188 milisekund
Izvedba naloge traja 14.671 milisekund
Razlika v hitrosti med njima je 78-kratna!!
Naloga je zelo počasna, ne vem, zakaj se to dogaja, ali je kaj narobe z mojo testno kodo ali kaj? Upam, da mi lahko razložiš, zakaj se to dogaja...
|