Параллельное и распределенное программирование на С++ (Хьюз, Хьюз) - страница 445

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, он не будет претенденто м для пере м ещения в конец очереди планируе