Операции с граничным приоритетом

We use cookies. Read the Privacy and Cookie Policy

Операции с граничным приоритетом

Большинство параметров мьютекса не могут быть изменены после его создания. Но не все. В процессе работы с мьютексом может быть изменено значение приоритета, которое система использует для реализации протокола граничного приоритета с целью предотвращения инверсии приоритетов:

int pthread_mutex_setprioceiling(pthread_mutex_t* mutex,

 int prioceiling, int* old_ceiling);

int pthread_mutex_getprioceiling(const pthread_mutex_t* mutex,

 int* prioceiling);

Функция pthread_mutex_setprioceiling() захватывает мьютекс (или блокируется, пока мьютекс не будет освобожден, и уже тогда захватывает его) и изменяет установленную для него величину граничного приоритета, после чего освобождает мьютекс для использования другими потоками. После изменения значения граничного приоритета предыдущее значение возвращается в old_ceiling.

Функция возвращает следующие значения:

EOK — успешное завершение;

EINVAL — указанный в вызове мьютекс не существует или указанный приоритет выходит за диапазон допустимых значений;

EPERM — поток, вызвавший функцию, не имеет прав на изменение граничного приоритета указанного мьютекса.

Данный текст является ознакомительным фрагментом.