Tôi đang sử dụng Parallel.ForEach và tôi đang làm một số cập nhật cơ sở dữ liệu, bây giờ mà không cần thiết lập MaxDegreeOfParallelism, một bộ xử lý lõi kép kết quả trong thời gian chờ máy khách sql, nơi khác quad core xử lý máy bằng cách nào đó không timeout.MaxDegreeOfParallelism làm gì?
Bây giờ tôi không thể kiểm soát loại lõi bộ xử lý có sẵn khi mã của tôi chạy, nhưng có một số cài đặt tôi có thể thay đổi với MaxDegreeOfParallelism có thể chạy ít hoạt động cùng một lúc hơn và không dẫn đến hết thời gian chờ không?
Tôi có thể tăng thời gian chờ nhưng không phải là giải pháp tốt, nếu trên CPU thấp hơn, tôi có thể xử lý ít hoạt động đồng thời hơn, điều đó sẽ giảm tải trên CPU.
Ok tôi đã đọc tất cả các bài đăng và MSDN khác, nhưng sẽ thiết lập MaxDegreeOfParallelism để giá trị thấp hơn làm cho máy lõi tứ của tôi bị ảnh hưởng?
Ví dụ, có anyway để làm điều gì đó như thế, nếu CPU có hai lõi, sau đó sử dụng 20, nếu CPU có bốn lõi sau đó 40?
Logic của tôi không có bất kỳ chờ đợi hoặc bất kỳ IO, nó chỉ cập nhật SQL, có SQL có thể có riêng của mình, nhưng chủ yếu là tôi đang chờ đợi SQL để kết thúc. Tối đa mặc định không có chủ đề đang hoạt động được sử dụng là gì? –
Giá trị mặc định là 2 cho mỗi lõi, nhưng TPL có thể tăng giá trị này nếu mã của bạn không sử dụng CPU. Hầu hết các cơ sở dữ liệu liên quan đến một số lượng IO. –
Nếu máy 6 lõi của tôi bị tải nặng, nó chỉ sử dụng 1 hoặc 2 luồng. Nếu nó được nạp nhẹ, nó sẽ lên tới 12. Nó đủ thông minh để tính tải hệ thống hiện có. – Contango