2014-07-12 21 views
5

Tôi đọc một số phân đoạn về hồ sơ chuỗi cửa sổ. Nó trông giống như CLR thread pool.sự khác biệt giữa hồ bơi chuỗi cửa sổ và hồ bơi chủ đề CLR

CLR được dựa trên Windows, vì vậy chuỗi CLR dựa trên hồ bơi chuỗi cửa sổ, có đúng không?

Tôi biết rằng mỗi quy trình .net có một nhóm luồng, tình huống trong nhóm chuỗi cửa sổ là gì? Hệ điều hành có một hồ bơi thread hoặc nhiều?

Trong C#, nhà phát triển có thể kiểm soát hồ bơi chuỗi cửa sổ theo mã không?

+3

Khi bạn hỏi về nội dung bạn đã đọc, hãy bao gồm liên kết (hoặc ít nhất là tên xuất bản). –

Trả lời

13

Đây là một trong những câu hỏi thực hiện CLR không có câu trả lời thẳng. Nó không phải là CLR để xác định cách ThreadPool được thực hiện. Đây là công việc của máy chủ CLK . Một lớp phần mềm tích hợp CLR với hệ điều hành. Giao diện cốt lõi mà CLR sử dụng để thực hiện các công việc chủ đề được thực hiện là IHostThreadPoolManager. Nó là một giao diện COM không được quản lý nhưng bạn sẽ gặp phải một chút rắc rối khi nhận dạng bản đồ gần như một với một thành viên lớp ThreadPool.

nhiều lần triển khai của máy chủ CLR. Những người dễ nhận biết hơn là máy chủ CLR mặc định cho các ứng dụng dành cho máy tính để bàn, được thực hiện bởi mscoree.dll. Có các phiên bản khác nhau của nó cho các phiên bản Windows khác nhau. Và ASP.NET, Sql Server, quá trình Visual Studio Hosting, máy chủ tùy chỉnh cho Silverlight, Windows Phone, XBox. Và những ứng dụng kém dễ nhận biết hơn, các ứng dụng không được quản lý lớn có thể lưu trữ bản thân CLR để hỗ trợ việc viết kịch bản được thực hiện bằng ngôn ngữ .NET. Các chương trình CAD như AutoCAD, vv là các ví dụ tiêu chuẩn.

Khái niệm cốt lõi của một luồng được ảo hóa trong CLR. IClrTask và IClrTaskManager là các giao diện lưu trữ cho điều đó. Cho phép một máy chủ để thực hiện một chủ đề trên một cái gì đó khác hơn là một sợi hệ điều hành. Giống như một sợi. Không ai thực sự làm điều này btw.

Chắc chắn, Windows có api riêng cho một luồng. Chức năng winapi CreateThreadPool() nhận được quả bóng lăn. Tuy nhiên, poking xung quanh các tập tin mscor * .dll trên máy tính của tôi với dumpbin.exe/nhập khẩu, tôi không nhìn thấy nó đang được sử dụng. Ít nhất một phần của vấn đề có thể là CreateThreadPool() là một hàm winapi sau, chỉ có sẵn từ Vista. XP và các phiên bản Windows trước đó đã thực hiện đơn giản hơn nhiều. Vì vậy, không, ít nhất là cho phiên bản máy tính để bàn của .NET 4.5.2, các threadpool Windows dường như không có liên quan.

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