Tôi chỉ tự hỏi nếu có bất kỳ chính sách khóa nào trong C++ 11 sẽ ngăn chặn các luồng khỏi đói.Làm thế nào để ngăn chặn các chủ đề khỏi nạn đói trong C++ 11
Tôi có một chuỗi các chủ đề đang cạnh tranh cho một mutex. Bây giờ, vấn đề của tôi là các thread đó là để lại một phần quan trọng bắt đầu ngay lập tức cạnh tranh cho cùng một mutex và hầu hết thời gian thắng. Vì vậy, các chủ đề khác chờ đợi trên mutex đang đói.
Tôi không muốn để chuỗi, để lại phần quan trọng, ngủ trong một khoảng thời gian tối thiểu để cho các chủ đề khác có cơ hội khóa mutex.
Tôi nghĩ rằng phải có một số thông số cho phép khóa công bằng cho các chuỗi đang chờ trên mutex nhưng tôi không thể tìm thấy giải pháp thích hợp nào. Vâng, tôi thấy std :: this_thread :: yield() chức năng, trong đó giả sử để sắp xếp lại thứ tự của thực hiện chủ đề, nhưng nó chỉ là gợi ý để lên lịch thread và phụ thuộc vào việc thực hiện thread scheduler nếu nó lên lịch lại các chủ đề hay không.
Có cách nào để cung cấp chính sách khóa công bằng cho các chuỗi đang chờ trên cùng một mutex trong C++ 11 không? Các chiến lược thông thường là gì?
Cảm ơn
http://stackoverflow.com/questions/11666610/how-to-give-priority-to-privileged-thread-in-mutex-locking Dưới đây là một liên kết có thể giúp bạn !! –
Điều này có vẻ là một vấn đề thiết kế không phải là một vấn đề đói thread, bạn có thể gửi mã để cho mọi người nhìn thấy nó và có lẽ giúp đỡ. – dirvine
Bạn thường không nên có một loạt các chủ đề cạnh tranh cho một mutex - nếu mã của bạn là serial đó chỉ có một thread có thể làm việc cùng một lúc, tại sao không có ít chủ đề hơn? Có các lý do hợp lệ, nhưng chúng không phải là tất cả các lý do hợp lệ, và chúng có thể có các câu trả lời khác nhau! – Yakk