2010-12-26 32 views
12

Tôi hiện đang nghiên cứu Thư viện công việc song song và tôi đọc ở đâu đó rằng TPL thực sự sử dụng cơ chế nhóm luồng từ CLR-Level. Tôi không thể tìm thấy bất kỳ bài viết nào xác nhận thông tin này. Tôi biết, TPL có hàng đợi công việc cho mỗi chủ đề và sử dụng một số thuật toán đánh cắp công việc đặc biệt để cân bằng. Theo như tôi biết, nó tạo ra một sợi cho mỗi bộ xử lý. Các nhóm chủ đề bắt đầu sử dụng các đối tượng nhiệm vụ của TPL từ .NET 4.(Làm thế nào) TPL sử dụng (CLR) Thread Pool?

Tôi không thể hiểu cách TPL sử dụng nhóm chủ đề. Thread-Pool mô hình tiểu bang, các mục công việc được xếp hàng đợi và các chủ đề miễn phí trong thread thread mất một từ hàng đợi này. TPL tuy nhiên lưu trữ các mục (nhiệm vụ) vào hàng đợi của các chủ đề và các công việc trộm cắp công việc nếu cần ... Vì vậy, hoàn toàn khác nhau. Sai lầm của tôi đâu rồi?

câu hỏi bổ sung: Vì đây là câu hỏi Stack Overflow đầu tiên của tôi, tôi không chắc liệu câu hỏi đó có phù hợp hay không. Là nó?

+1

(Nó hoàn toàn ổn bằng một câu hỏi SO, bằng cách này.) –

Trả lời

9

Trong TPL, TaskScheduler chịu trách nhiệm thực sự xếp hàng các nhiệm vụ để thực thi. Trình lập lịch biểu Default sẽ sử dụng nhóm chủ đề - nhưng tôi tin rằng đó là triển khai nhóm luồng mới thực sự làm cho sự thông minh của công việc ăn cắp.

Daniel Moth có blog post với một số chi tiết khác mà bạn có thể thấy hữu ích.

+1

Bài viết rất hữu ích, cảm ơn. Tôi hiểu lý do cho sự nhầm lẫn của tôi: logic nhiệm vụ và trộm cắp công việc thực sự được thiết kế như một phần của TPL. Nhưng việc thực hiện là trong thread-pool. Điều này phát triển thread-pool đến một "hồ bơi với công ăn cắp". Cảm ơn một lần nữa. – eks

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