2010-08-10 27 views

Trả lời

9

Các ThreadPool được chia sẻ trên tất cả các appdomains - kể từ đó có nghĩa là chủ đề có thể kết thúc chuyển đổi giữa appdomains có Đã làm việc Perf xung quanh đó (có khả năng thường!):

http://blogs.msdn.com/b/ericeil/archive/2009/04/23/clr-4-0-threadpool-improvements-part-1.aspx

[...] Trên thực tế, chúng tôi đã vi phạm “quy tắc” này : từ ngày 3.5 trở lên, CLR nhóm luồng đã duy trì riêng biệt hàng đợi FIFO cho mỗi AppDomain trong quy trình và thêm hàng đợi độc lập FIFO cho công việc "gốc" tem chẳng hạn như xếp hàng theo máy chủ (ASP.net là người dùng chính của tính năng này). Chúng tôi round-robin giữa những hàng đợi công việc, cho phép từng thực hiện công việc cho một số thời gian trước khi chuyển sang tiếp theo. [...]

BTW, lưu ý rằng nói đúng ThreadPool không được chia sẻ trên toàn bộ quá trình nữa, kể từ khi CLR v4 cho phép tải side-by-side với V2, và mỗi sẽ có threadpool riêng của nó.

0

Không chắc chắn 100%, nhưng tôi nghĩ hồ sơ luồng là một lần cho mỗi quá trình, không phải một lần cho mỗi AppDomain. Hãy thử xem bài viết này trên thread & appdomain:

4

Threadpool được chia sẻ giữa tất cả các miền ứng dụng, vì mỗi luồng threadpool là thuyết bất khả tri và toàn bộ hồ sơ thời gian chạy trên luồng chủ yếu phụ thuộc vào phần cứng bạn đang chạy (# procs, hyperthreading và như vậy)

Có một nhóm luồng cho mỗi quy trình. Nhóm chủ đề có kích thước mặc định là 25 luồng trên mỗi bộ xử lý có sẵn. Số lượng chủ đề trong chủ đề có thể thay đổi bằng cách sử dụng phương thức SetMaxThreads. Mỗi chuỗi sử dụng kích thước ngăn xếp mặc định và chạy ở mức ưu tiên mặc định là .

Nguồn: http://msdn.microsoft.com/en-us/library/system.threading.threadpool.aspx

Nếu tôi nhớ không lầm thì CLR xử lý các chủ đề threadpool nội bộ và làm sạch khuôn khổ chủ đề trước khi phục vụ một yêu cầu công việc.

+1

Đây là liên kết đến tài liệu mới nhất cho .NET 4. http://msdn.microsoft.com/en-us/library/system.threading.threadpool.aspx. Có 250 chuỗi công nhân cho mỗi bộ xử lý có sẵn. – btlog

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