Bạn đang nghe hai khái niệm khác nhau về tác vụ. Đầu tiên là khái niệm về một công việc, và thứ hai là khái niệm của một quá trình.
Một thời gian dài trước đây (về mặt máy tính), không có chủ đề nào. Mỗi thể hiện của một chương trình được gọi là một quá trình, vì nó chỉ đơn giản là thực hiện một bước sau cái khác cho đến khi nó thoát ra. Điều này phù hợp với ý tưởng trực quan của một quá trình như một loạt các bước, giống như của một dây chuyền lắp ráp nhà máy. Hệ điều hành quản lý quá trình trừu tượng hóa.
Sau đó, nhà phát triển bắt đầu thêm nhiều dây chuyền lắp ráp cho các nhà máy. Bây giờ một chương trình có thể làm nhiều hơn một điều cùng một lúc, và hoặc là một thư viện hoặc (thường ngày nay) hệ điều hành sẽ quản lý việc lập lịch trình các bước trong mỗi luồng. Một luồng chỉ là một quá trình nhẹ, nhưng một luồng thuộc về một tiến trình và tất cả các luồng trong một bộ nhớ chia sẻ quy trình. Mặt khác, nhiều quy trình không thể gây rối với bộ nhớ của nhau. Vì vậy, nhiều chủ đề trong máy chủ web của bạn có thể truy cập cùng một thông tin về kết nối, nhưng Word không thể truy cập cấu trúc dữ liệu trong bộ nhớ của Excel vì Word và Excel đang chạy dưới dạng các quy trình riêng biệt. Ý tưởng về một quá trình như một loạt các bước không thực sự phù hợp với mô hình của một quá trình với các luồng, vì vậy một số người đã gọi đến "trừu tượng trước đây được gọi là một quá trình" một nhiệm vụ. Đây là định nghĩa thứ hai của tác vụ mà bạn đã thấy trong bài đăng trên blog. Lưu ý rằng nhiều người vẫn sử dụng quá trình từ để có nghĩa là điều này.
Vâng, khi các chủ đề trở nên nhiều hơn, các nhà phát triển đã thêm nhiều phần trừu tượng hơn trên đầu chúng để làm cho chúng dễ sử dụng hơn. Điều này dẫn đến sự gia tăng của hồ bơi thread, mà là một "hồ bơi" quản lý thư viện của chủ đề. Bạn vượt qua thư viện một công việc và thư viện chọn một chuỗi và chạy công việc trên chuỗi đó. Khuôn khổ .NET có triển khai pool thread, và lần đầu tiên bạn nghe về một "nhiệm vụ", tài liệu thực sự có nghĩa là một công việc mà bạn chuyển đến pool thread.
Vì vậy, theo nghĩa nào đó, cả tài liệu và bài đăng trên blog đều đúng. Việc quá tải nhiệm vụ nhiệm vụ là nguồn gây nhầm lẫn không may.
Nguồn
2012-02-29 04:05:17
Sự khác nhau giữa * công việc * và * công nhân * là gì? Một công nhân * làm * một công việc; một công nhân không phải là * một công việc *. Một số công việc được thực hiện bởi một công nhân; một số công việc được chia thành các công việc nhỏ hơn được thực hiện bởi nhiều công nhân làm việc cùng nhau. Cùng với nhiệm vụ và chủ đề; một nhiệm vụ không phải là * một loại luồng *; một công việc là một công việc, và một sợi chỉ là một công nhân làm công việc đó. –
Một điểm tương tự khác mà tôi đã nghe là bộ vi xử lý là các trình điều khiển, các luồng là các xe tải và các nhiệm vụ được tải xuống. Một người lái xe (bộ vi xử lý) chỉ có thể vận hành một xe tải (sợi) tại một thời điểm, và một chiếc xe tải (sợi) chỉ có thể chở một tải (nhiệm vụ) tại một thời điểm. Bạn có thể mua bao nhiêu xe tải theo ý muốn, nhưng càng có nhiều thời gian để người lái xe chuyển đổi giữa các xe tải ít tốn thời gian hơn.Tải trọng có thể được chất đống trong một nhà kho chờ đợi cho giao thông vận tải, và các nhà kho có thể ưu tiên cho họ và gán chúng cho xe tải dựa trên bất kỳ quy tắc có ý nghĩa. –