Dường như phương pháp TaskFactory.StartNew
trong .NET 4.0 được dự định thay thế cho ThreadPool.QueueUserWorkItem
(according to this post, anyway). Câu hỏi của tôi rất đơn giản: có ai biết tại sao không?TaskFactory.StartNew so với ThreadPool.QueueUserWorkItem
Có TaskFactory.StartNew
có hiệu suất tốt hơn không? Nó có sử dụng ít bộ nhớ hơn không? Hoặc là nó chủ yếu cho các chức năng bổ sung được cung cấp bởi các lớp học Task
? Trong trường hợp thứ hai, không StartNew
có thể có hiệu suất tồi tệ hơn hơn QueueUserWorkItem
?
Dường như với tôi rằng StartNew
sẽ thực sự có khả năng sử dụng bộ nhớ hơn hơn QueueUserWorkItem
, vì nó trả về một đối tượng Task
với mỗi cuộc gọi và tôi hy vọng rằng kết quả trong phân bổ bộ nhớ hơn.
Trong mọi trường hợp, tôi muốn biết thích hợp hơn cho kịch bản hiệu suất cao.
AFAIK mặc định TaskScheduler sử dụng ThreadPool và không có sự khác biệt giữa chúng khi bạn muốn hỗ trợ đa lõi. Anh chàng thậm chí đã thực hiện một số xét nghiệm: http://stackoverflow.com/a/5219311/152291 – prostynick