.NET 4 zawiera nową przestrzeń nazw, System.Threading.Tasks, która zawiera klasy abstrahujące funkcjonalność wątków. Używaj ThreadPool w tle. Zadanie reprezentuje pracę jednostki, którą należy wykonać. Praca tej jednostki może być wykonywana w osobnym wątku lub zadanie może być uruchamiane synchronicznie, co wymaga oczekiwania na główny wątek strojenia. Korzystanie z zadań nie tylko daje warstwę abstrakcji, ale także dużą kontrolę nad wątkami leżącymi u podstaw. Zadania dają dużą elastyczność w planowaniu pracy, którą trzeba wykonać. Na przykład możesz zdefiniować zadanie ciągłe – co należy wykonać po jego zakończeniu. To może decydować o sukcesie lub niepowodzeniu. Ponadto zadania mogą być ułożone w hierarchię. Na przykład zadanie nadrzędne może utworzyć nowe zadanie potomne. Tworzy to zależność, dzięki której jeśli anulujesz zadanie nadrzędne, jego zadanie podrzędne również zostanie anulowane.
Obecnie popularne jest stosowanie metod wykonywania zadań, które są wysokowydajne, a nie wiem, gdzie jest wydajność zadań.
Sam testowałem Task i Thread i uważam, że Task jest bardzo wolny, co znacząco wpływa na wydajność, a kod testowy wygląda następująco:
Przechodzimy przez tę metodę 1000 razy, a następnie metoda blokuje się przez 100 milisekund, a wynik testu jest następujący:
Wynik:
Wykonanie nici trwa 188 milisekund
Wykonanie zadania trwa 14 671 milisekund
Różnica prędkości między nimi wynosi 78 razy!!
Zadanie jest bardzo wolne, nie wiem, dlaczego tak się dzieje, czy coś jest nie tak z moim kodem testowym, czy co? Mam nadzieję, że wyjaśnisz, dlaczego tak się dzieje...
|