.NET 4 sisaldab uut nimeruumi, System.Threading.Tasks, mis sisaldab klasse, mis abstrakteerivad lõimimise funktsionaalsust. Kasuta taustal ThreadPooli. Ülesanne tähistab üksuse tööd, mis tuleks lõpetada. Selle seadme tööd saab käivitada eraldi lõimes või käivitada ülesanne sünkroonselt, mis nõuab peamise häälestuslõime ootamist. Ülesannete kasutamine annab sulle mitte ainult abstraktsioonikihi, vaid ka palju kontrolli aluseks olevate lõimede üle. Ülesanded pakuvad palju paindlikkust tööde ajastamisel. Näiteks saate defineerida pideva ülesande – millist tööd tuleks pärast ülesande lõpetamist teha. See võib otsustada, kas ülesanne on edukas või mitte. Lisaks saab ülesandeid korraldada hierarhias. Näiteks võib vanemülesanne luua uue alamülesande. See tekitab sõltuvuse, nii et kui tühistad vanema ülesande, tühistatakse ka selle lapsülesanne.
Tänapäeval on populaarne kasutada ülesannete täitmise meetodeid, mis on kõrge jõudlusega ja ma ei tea, kus ülesannete sooritus on.
Testisin ise Taski ja Threadi ning tunnen, et Task on väga aeglane, mis mõjutab jõudlust tugevalt, ning testikood on järgmine:
Me läbime meetodi 1000 korda, seejärel blokeerime meetodi 100 millisekundiks ning testitulemus on järgmine:
Tulemus:
Lõime täitmine võtab 188 millisekundit
Ülesande täitmine võtab aega 14 671 millisekundit
Nende kahe kiiruse on 78 korda!!
Ülesanne on väga aeglane, ei tea, miks see juhtub, kas mu testikoodiga on midagi valesti või mis? Loodan, et suudad selgitada, miks see juhtub...
|