Эти функции не возвра щ
ают код ошибки [EINTR]. pthread_mutexattr_getprioceiling, pthread_mutexattr_setprioceiling — функции считывания и установки атрибута prioceiling
в объекте агрибутов м ьютекса (REALTIME THREADS). Примеры
Отсутствуют.
Замечания по использованию
Отсутствуют.
Логическое обоснование
Отсутствует.
Будущие направления
Отсутствуют.
Смотри также
pthread_cond_destroy(), pthread_create(), pthread_mutex_destroy(), том Base Definitions стандарта1ЕЕЕ Std 1003.1-2001, .
Последовательность внесения изменений
Функции впервые реализованы в выпуске Issue 5. Включены для со г
ласования с расширением POSIX Threads Extension. Отмечены как часть группы Realtime Threads Feature Group.
Issue
6 Функции pthread_mutexattr_getprioceiling() и pthread_mutexattr_setp-rioceiling () отмечены как часть опций Threads и Thread Priority Protection.
Код ошибки [ENOSYS]
был исключен, поскольку его нет смысла учитывать, если реализация не под д ерживает опцию Thread Priority Protection. Ко д
ошибки [ENOTSUP] был исключен, поскольку эти функции не имеют аргумента protocol. В целях согласования со стан д
артом ISO/IEC 9899: 1999 в прототип функции pthread_mutexattr_getprioceiling() было д обавлено ключевое слово restrict. pthread_mutexattr_setprotocol, pthread_mutexattr_getprotocol
Имя
pthread_mutexattr_setprotocol, pthread_mutexattr_getprotocol
Синопсис
THR #include
TPP|TPI
int pthread_mutexattr_getprotocol (const pthread_mutexattr_t *restrict attr, int *restrict protocol);
int pthread_mutexattr_setprotocol (
pthread_mutexattr_t * attr, int protocol) ;
Описание
Функции pthread_mutexattr_getprotocol() и pthread_mutexattr_setprotocol () используются для считывания и установки соответственно атрибута protocol
в объекте атрибутов м ьютекса, адресуе м о г о пара м етро м attr, который был ранее создан с помощью функции pthread_mutexattr_init (). Параметр protocol
определяет протокол, которому необходимо следовать при использовании мьютексов. Этот атрибут может иметь следующие значения (которые определены в заголовке ): PTHREAD_PRIO_NONE
TPI PTHREAD_PRIO_INHERIT
TPP PTHREAD_PRIO_PROTECT
Если поток владеет мьютексом с использованием значения PTHREAD_PRIO_NONE
для атрибута protocol, то факт обладания мьютексом не отражается на значении его приоритета и стратегии планирования. TPI Если поток блокирует потоки с более высоким приоритетом благодаря тому, что он владеет одним или несколькими мьютексами, у которых атрибут protocol
и м еет значение PTHREAD_PRIO_INHERIT, то он будет выполняться с наивысши м из приоритетов потоков, ожидаю щ их освобождения любого из м ьютексов. TPP Если поток владеет одни м
или нескольки м и м ьютекса м и, у которых атрибут protocol имеет значение PTHREAD_PRIO_PROTECT, то он будет выполняться с самым высоким из предельных приоритетов всех мьютексов, принадлежащих этому потоку и инициализированных с этим атрибутом, независимо от того, заблокированы другие потоки по любому из этих мьютексов или нет. Пока поток удерживает м
ьютекс, у которого атрибут protocol был инициализирован значение м PTHREAD_PRIO_INHERIT или PTHREAD_PRIO_PROTECT, он не будет претенденто м для пере м ещения в конец очереди планируе м ых заданий в результате из м енения его исходного приоритета, напри м ер, после вызова функции sched_setparam (). Аналогично, если поток разблокирует м ьютекс, у которого атрибут protocol был инициализирован значение м PTHREAD_PRIO_INHERIT или PTHREAD_PRIO_PROTECT, он не будет претенденто м для пере м ещения в конец очереди планируе м ых заданий в результате из м енения его исходного приоритета. Если поток одновре м
енно владеет нескольки м и м ьютекса м и, и н ициализированны м и в соответствии с различны м и протокола м и, он будет выполняться с са м ы м высоки м из приоритетов, полученных по каждо м у из протоколов. TPI Если поток обращается к функции pthread_mutex_lock (), а атрибут protocol
задавае м ого м ьютекса был инициализирован значение м PTHREAD_PRIO_INHERIT, и если вызывающий поток блокируется из-за того, что м ьютекс прина д лежит друго м у потоку, то этот поток — владелец м ьютекса — наследует уровень приоритета вызываю щ его потока, приче м до тех пор, пока он продолжает удерживать м ьютекс. Реализация устанавливает приоритет выполнения согласно м акси м ально м у значению (выбранного из заданного и всех унаследованных приоритетов). Более того, если этот поток — владелец м ьютекса са м блокируется по друго м у м ьютексу, такой же эффект наследования приоритетов рекурсивно распространяется и на этого владельца. Возвращаемые значения