.NET 4 apima naują vardų sritį System.Threading.Tasks, kurioje yra klasės, abstrahuojančios gijų funkciją. Naudokite "ThreadPool" fone. Užduotis nurodo vieneto darbą, kurį reikia atlikti. Šio įrenginio darbas gali būti vykdomas atskiroje gijoje arba užduotis gali būti pradėta sinchroniškai, todėl reikia laukti pagrindinės derinimo gijos. Užduočių naudojimas ne tik suteikia abstrakcijos sluoksnį, bet ir suteikia daug galimybių valdyti pagrindines gijas. Užduotys suteikia daug lankstumo planuojant darbus, kuriuos reikia atlikti. Pavyzdžiui, galite apibrėžti tęstinę užduotį – koks darbas turi būti atliktas atlikus užduotį. Tai gali lemti sėkmingą užduotį ir ne. Be to, užduotys gali būti išdėstytos hierarchijoje. Pavyzdžiui, pirminė užduotis gali sukurti naują antrinę užduotį. Taip sukuriama priklausomybė, kad atšaukus pirminę užduotį, bus atšaukta ir jos antrinė užduotis.
Šiais laikais populiaru naudoti užduočių vykdymo metodus, jie yra didelio našumo, ir nežinau, kur yra užduočių atlikimas.
Aš pats išbandžiau užduotį ir giją, ir manau, kad užduotis yra labai lėta, o tai labai veikia našumą, o bandymo kodas yra toks:
Mes pereiname metodą 1000 kartų, tada metodas blokuojamas 100 milisekundžių, o testo rezultatas yra toks:
Rezultatus:
Gijos vykdymas trunka 188 milisekundes
Užduoties vykdymas trunka 14 671 milisekundę
Greičio skirtumas tarp jų yra 78 kartus!!
Užduotis yra labai lėta, nežinau, kodėl tai vyksta, ar kažkas negerai su mano bandomuoju kodu, ar ką? Tikiuosi, kad galite paaiškinti, kodėl taip atsitinka...
|