2012-10-06 22 views

Trả lời

10

Task s sử dụng phần cơ bản ThreadPool (trừ khi được đánh dấu là chạy dài), bạn nên sử dụng chúng bất cứ khi nào sử dụng ThreadPool không được thông báo, ví dụ:

  • hoạt động I/O dài làm tắc nghẽn hàng đợi công việc và ngăn các tác vụ khác được thực thi.
  • thực hiện các hoạt động yêu cầu nhận dạng chuỗi như đặt mối quan hệ.
+1

Mối quan hệ chủ đề là một điểm rất tốt, mặc dù nó hiếm khi xuất hiện. –

+0

+1 để đề cập đến thời gian chạy IO dài. –

+4

Tôi khuyên bạn nên vẫn sử dụng các tác vụ cho các hoạt động dài hạn, miễn là bạn đánh dấu chúng là LongRunning. –

6

này được đi vào chi tiết hơn ở đây: Should I notice a difference in using Task vs Threads in .Net 4.0?

khác biệt lớn nhất này là TaskFactory sử dụng sợi tổng hợp, vì vậy nếu bạn có rất nhiều nhiệm vụ mà họ có thể không bắt đầu ngay lập tức. Họ phải chờ một chuỗi miễn phí để chạy. Trong hầu hết các trường hợp, điều này có thể chấp nhận được ..

Chủ đề sẽ chạy ngay lập tức ngay sau khi .Start() được gọi, cho phép phần cứng.

Giả sử việc gộp nhóm là không sao, Nhiệm vụ cung cấp nhiều lợi ích bao gồm hủy, Tiếp tục, OnSuccess, OnError, Tổng hợp ngoại lệ và WaitAll để đặt tên một vài đầu khỏi đầu của tôi.

+1

Chủ đề sẽ sẵn sàng ngay lập tức ngay sau khi .Start() được gọi. Chúng sẽ chạy khi một lõi có sẵn, thường là 'tức thời' là –

+0

Điểm tốt, tôi nên làm rõ rằng Chủ đề là phần cứng giới hạn trong khi Nhiệm vụ là phần mềm bị giới hạn. – Dharun

+0

Cảm ơn Dharun. Bài đăng trên blog dường như có sự so sánh tốt đẹp về các cách tiếp cận khác nhau. http://nitoprograms.blogspot.ca/2010/08/various-implementations-of-asynchronous.html – imak

Các vấn đề liên quan