pthread_mutexattr_setprotocol()

Установить протокол планирования мьютекса

Прототип:

#include <pthread.h>
int pthread_mutexattr_setprotocol( pthread_mutexattr *attr,
int protocol );

Аргументы:

attr
Указатель на объект pthread_mutexattr_t, в котором требуется установить атрибут.
protocol
Новое значение протокола планирования; одно из следующих:
PTHREAD_PRIO_INHERIT
когда поток блокирует потоки с более высоким приоритетом, блокируя один или несколько мьютексов с помощью этого атрибута, поднять приоритет потока до приоритета потока с наивысшим приоритетом, ожидающего мьютекса PTHREAD_PRIO_INHERIT.
PTHREAD_PRIO_PROTECT
выполнить поток с наивысшим приоритетом или предельным приоритетом всех мьютексов, принадлежащих потоку и инициализированных с помощью PTHREAD_PRIO_PROTECT, независимо от того, заблокированы другие потоки или нет.
PTHREAD_PRIO_NONE
владение мьютексом не влияет на приоритет и планирование потока.

Библиотека:

libc

Описание:

Функция pthread_mutexattr_setprotocol() устанавливает протокол планирования protocol для атрибута мьютекса attr. Структура, на которую указывает attr, должна быть предварительно создана с помощью pthread_mutexattr_init().

Атрибут protocol определяет протокол для использования мьютексов. Поток, содержащий мьютекс PTHREAD_PRIO_INHERIT, не будет перемещен в конец очереди планирования, если его первоначальный приоритет изменится (например, вызовом pthread_setschedparam()). Это также верно, если поток разблокирует мьютекс PTHREAD_PRIO_INHERIT.

Возвращаемое значение:

EOK
Успешное завершение.
ENOTSUP
Аргумент protocol не поддерживается или является недопустимым значением.

Классификация:

POSIX 1003.1 Threads, Thread Priority Protection, Thread Priority Inheritance

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

pthread_mutexattr_getprotocol(), pthread_mutexattr_getrecursive()




Предыдущий раздел: Описание API системной библиотеки