Поток L имеет низкий приоритет, поток M — средний, поток H — высокий. Поток L захватывает мьютекс, и, выполняясь с удержанием мьютекса, прерывается потоком M, который пробудился по какой-то причине, и имеет более высокий приоритет. Поток H пытается захватить мьютекс.
В полученной ситуации поток H ожидает завершения текущей работы потоком M, ибо, пока поток M исполняется, низкоприоритетный поток L не получает управления и не может освободить мьютекс.
Устраняется повышением приоритета всех нитей, захватывающих данный мьютекс, до одного и того же высокого значения на период удержания мьютексa. Некоторые реализации мьютексов делают это автоматически.
Do'stlaringiz bilan baham: |