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

о г ут завершиться неудачно, если:

[ EINVAL]  значение, заданное параметром attr, недействительно.

Функция pthread_mutexattr_setpshared () м ожет завершиться неу д ачно, если:

[EINVAL] новое значение, за д анное д ля атрибута, попадает вне диапазона значений, действительных д ля этого атрибута.

Эти функции не возвра щ ают код ошибки [EINTR].

Примеры

Отсутствуют.

Замечания по использованию

Отсутствуют.

Логическое обоснование

Отсутствует.

Будущие направления

Отсутствуют.

Смотри также

pthread_cond_destroy(), pthread_create(), pthread_mutex_destroy(), pthread_mutexattr_destroy (), то м Base Definidons стандарта IEEE Std 1003.1-2001, .

Последовательность внесения изменений

Функции впервые реализованы в выпуске Issue 5. Включены для согласования с расширение м POSIX Threads Extension.

Issue 6

Функции pthread_mutexattr_getpshared() и pthread_mutexattr_setpshared () от м ечены как часть опций Threads и Thread Process-Shared Synchronization.

В целях согласования со стандарто м ISO/IEC 9899: 1999 в прототип функции pthread_mutexattr_getpshared () было добавлено ключевое слово restrict.

pthread_mutexattr_gettype, pthread_mutexattr_settype

Имя

pthread_mutexattr_gettype, pthread_mutexattr_settype — функции считывания и установки атрибута type.

Синопсис

XSI #include

int pthread_mutexattr_gettype (

const pthread_mutexattr_t *restrict attr, int *restrict type); int pthread_mutexattr_settype (

pthread_mutexattr_t *attr, int type);

Описание

Функции pthread_mutexattr_gettype() и pthread_mutexattr_settype() используются для считывания и установки соответственно атрибута type. Этот атрибут задается при вызове этих функций в пара м етре type. По у м олчанию атрибут type устанавливается равны м значению PTHREAD_MUTEX_DEFAULT.

Атрибут type содержит тип м ьютекса. Допусти м ы м и значения м и атрибута type м огут быть следую щ ие:

PTHREAD_MUTEX_NORMAL

Мьютекс этого типа не обнаруживает взаи м облокировки. Поток, пытаясь перезаблокировать такой м ьютекс без первоначального его разблокирования, попадает во взаи м облокировку. Попытка разблокировать м ьютекс, заблокированный други м потоко м, приводит к неопределенно м у поведению. Попытка разблокировать незаблокированный м ьютекс также приводит к неопределенно м у поведению.

PTHREAD_MUTEX_ERRORCHECK

Мьютекс этого типа выполняет проверку на наличие ошибок. Поток, пытаясь перезаблокировать такой мьютекс без первоначального его разблокирования, генерирует код ошибки. При попытке разблокировать мьютекс, заблокированный другим потоком, генерируется код ошибки. При попытке разблокировать незаблокированный мьютекс также генерируется код ошибки.