Взаимодействие протокола Posix mutex с потоками с различными политиками планирования - PullRequest
0 голосов
/ 07 декабря 2018

При создании мьютекса Posix мы можем указать протокол для работы с приоритетами: PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT и PTHREAD_PRIO_PROTECT.В случае защиты мы также установили верхний предел, который должен находиться в диапазоне для используемого планировщика.

Стандарт не дает четкого представления о том, как эти функции взаимодействуют с потоками в одном и том же процессе, которые имеют разные политики планирования, которыеможет не иметь перекрывающихся диапазонов приоритетов, о чем сообщают sched_get_priority_min() и sched_get_priority_max().Возможно, я не смотрю в нужном месте.

Вопросы:

  • Есть ли стандартное определение для случая, когда поток получает мьютекс с набором потолков, которыйвне допустимого диапазона для текущей политики планирования потока?

  • Стандарт говорит, что происходит, когда поток с низким приоритетом с политикой планирования, которая не допускает высоких приоритетов, удерживает мьютекс с PTHREAD_PRIO_INHERIT, и попытка заблокировать этот мьютекс сделана потоком с политикой планирования и приоритетом, невозможным с политикой потока с низким приоритетом?

  • Если не существует стандартного определения(или если реализации различаются), что делают реализации?

Я знаю, что поддержание согласованности политик планирования позволяет избежать этих проблем.

...