Najwyraźniej metoda TaskFactory.StartNew
w .NET 4.0 jest przeznaczona jako zamiennik dla ThreadPool.QueueUserWorkItem
(according to this post, anyway). Moje pytanie jest proste: czy ktoś wie, dlaczego?TaskFactory.StartNew versus ThreadPool.QueueUserWorkItem
Czy uzyskuje się lepszą wydajność niż TaskFactory.StartNew
? Czy zużywa mniej pamięci? Czy jest to głównie dla dodatkowej funkcjonalności zapewnianej przez klasę Task
? W tym ostatnim przypadku, czy jest StartNew
prawdopodobnie gorszy od niż od QueueUserWorkItem
?
Wydaje mi się, że StartNew
rzeczywiście potencjalnie wykorzystać więcej pamięci niż QueueUserWorkItem
, ponieważ zwraca Task
obiekt z każdej rozmowy i Spodziewam się, że aby doprowadzić do większej alokacji pamięci.
W każdym razie chciałbym wiedzieć, który wariant jest bardziej odpowiedni do scenariusza o wysokiej wydajności.
domyślny AFAIK TaskScheduler korzysta z puli wątków i nie ma żadnej różnicy między nimi, gdy chcesz wsparcie wielordzeniowych. Facet zrobił nawet kilka testów: http://stackoverflow.com/a/5219311/152291 – prostynick