Взаимодействие протокола Posix mutex с потоками с различными политиками планирования

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

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

Вопросы:

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

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

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

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

0 ответов

Другие вопросы по тегам