Trong điều kiện khoa học máy tính, một nhiệm vụ là một tương lai hoặc một lời hứa. (Một số người sử dụng hai thuật ngữ synomymously, một số sử dụng chúng một cách khác nhau, không ai có thể đồng ý về một định nghĩa chính xác.) Về cơ bản, một Task"lời hứa" để trả lại cho bạn một T, nhưng không phải bây giờ mình ơi, tôi kinda bận rộn, tại sao bạn không quay lại sau? Một chủ đề là một cách để thực hiện lời hứa đó. Nhưng không phải mọi tác vụ cần một thương hiệu mới đề. (Trong thực tế, việc tạo ra một chủ đề thường không mong muốn, bởi vì làm như vậy là đắt hơn nhiều so với sử dụng lại một chủ đề hiện từ threadpool. Thêm vào đó trong một thời điểm). Nếu các giá trị mà bạn đang chờ đợi đến từ các hệ thống tập tin hoặc một cơ sở dữ liệu hoặc mạng, sau đó không có nhu cầu cho một thread để ngồi lại và chờ đợi cho dữ liệu khi nó có thể được phục vụ các yêu cầu khác. Thay vào đó, các công tác có thể đăng ký một callback để nhận được giá trị (s) khi họ đã sẵn sàng. Đặc biệt, công tác không nói lý do tại sao nó là nó phải mất một thời gian dài để trở về giá trị. Nó có thể được rằng phải mất một thời gian dài để tính toán, hoặc nó có thể phải mất một thời gian dài để lấy. Chỉ trong trường hợp trước đây bạn sẽ sử dụng một chủ đề để chạy một nhiệm vụ. (Trong .NET, chủ đề đang hoảng đắt tiền, do đó, bạn thường muốn tránh họ càng nhiều càng tốt và thực sự chỉ sử dụng chúng nếu bạn muốn chạy nhiều tính nặng trên nhiều CPU. Ví dụ, trong Windows, một sợi chỉ nặng 12 KiByte ( Tôi nghĩ), trong Linux, một sợi nặng ít nhất là 4 KiByte, trong Erlang / BEAM thậm chí chỉ 400 Byte. Trong .NET, nó là 1 MiByte!)
đang được dịch, vui lòng đợi..
![](//viimg.ilovetranslation.com/pic/loading_3.gif?v=b9814dd30c1d7c59_8619)