Tôi muốn biết, có bao nhiêu luồng sẽ được sử dụng khi tôi chạy vòng lặp Parallel.For/ForEach.Có bao nhiêu luồng Parallel.For (Foreach) sẽ tạo ra? MaxDegreeOfParallelism mặc định?
Tôi thấy rằng nó có thể được thay đổi bằng tùy chọn MaxDegreeOfParallelism.
MaxDegreeOfParallelism giúp đỡ trên MSDN nói (link):
Theo mặc định, Ví và ForEach sẽ sử dụng tuy nhiên nhiều chủ đề các lên lịch cơ bản cung cấp, vì vậy thay đổi MaxDegreeOfParallelism từ mặc định chỉ giới hạn bao nhiêu nhiệm vụ đồng thời sẽ được dùng.
Nhưng tôi không biết có bao nhiêu chủ đề dựa trên lịch biểu cung cấp.
Tôi làm cách nào để tìm hiểu điều đó?
Tôi có thể kiểm tra nó với vòng lặp có 9999999 chạy, tuy nhiên kiểm tra này sẽ hiển thị số của tôi, chứ không phải quy tắc xác định số đó.
Chỉnh sửa/bổ sung sau:
Tôi googled cho "đồng thời tối đa sheduler", và tôi thấy (tại MSDN - link), mà TashSheduler
lớp có MaximumConcurrencyLevel
bất động sản, và:
Trả về một số nguyên đại diện cho mức đồng thời tối đa. trình lên lịch mặc định trả về Int32.MaxValue.
Lớp TaskSheduler đó được sử dụng làm "trình lên lịch cơ bản" cho các vòng song song này?
Điều thú vị là nó trả về hằng số '2147483647' .. không phải' int32.MaxValue'. –