Выбрать главу

Если функция pthread_condattr_init () вызывается для уже инициализированного объекта атрибутов attr , то результаты вызова этой функции не определены.

После того как объект атрибутов условной пере м енной уже был использован для инициализации одной или нескольких условных пере м енных, Любая функция, которая оказывает влияние на объект атрибутов (включая деструктор), никак не отразится на ранее инициализированных условных пере м енных.

Этот то м стан д арта IEEE Std 1003.1-2001 требует наличия д вух атрибутов: clock и process-shared.

Дополнительные атрибуты, их значения по умолчанию и имена соответствующих функций доступа, которые считывают и устанавливают эти значения атрибутов, определяются конкретной реализацией.

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

При успешно м завершении функции pthread_condattr_destroy() Hpthread_condattr_init() возвращают нулевое значение; в противном случае — код ошибки, обозначающий ее характер.

Ошибки

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

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

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

[ENOMEM]  для инициализации объекта атрибутов условной переменной недостаточно существующей памяти. Эти функции не возвращают код ошибки [EINTR].

Примеры

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

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

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

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

С м. описание функций pthread_attr_init () и pthread_mutex_init (). Атрибут process-shared был определен для условных переменных по той же причине, что и для м ьютексов.

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

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

Смотри также

pthread_attr_destroy (), pthread_cond_destroy (), pthread_condattr_getpshared(), pthread_create(),

pthread_mutex_destroy (), то м Base Definitions стан д арта IEEE Std 1003.1-2001, <pthread.h>.

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

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

Issue 6

Функции pthread_condattr_destroy() и pthread_condattr_init() от м ечены как часть опции Threads.

pthread_condattr_getpshared, pthread_condattr_setpshared

Имя

pthread_condattr_getpshared, pthread_condattr_setpshared — функции считывания и установки атрибутаусловной пере м енной process-shared.

Синопсис

THR TSH

#include <pthread.h>

int pthread_condattr_getpshared (const pthread_condattr_t *restrict attr, int *restrict pshared);

int pthread_condattr_setpshared (pthread_conda 11 r_t * аttr, int pshared) ;

Описание

Функция pthread_condattr_getpshared () используется для получения значения атрибута process - shared из объекта атрибутов, адресуе м ого параметром attr. Функция pthread_condattr_setpshared() позволяет установить атрибут process-shared в инициализированно м объекте атрибутов, адресуе м о м пара м етро м attr .

Атрибут process-shared устанавливается равным значению PTHREAD_PROCESS_ SHARED, чтобы разрешить использование условной переменной любым потоком, имеющим доступ к области памяти, в которой она размещена, даже если эта область памяти разделяется несколькими процессами. Если же атрибут process-shared равен значению PTHREAD_PROCESS_PRIVATE , Условная Переменная должна использоваться только потоками, созданными в одном процессе с потоком, который ее инициализировал; если с этой условной переменной попытаются работать потоки из различных процессов, поведение такой программы не определено. По умолчанию для этого атрибута устанавливается значение PTHREAD_PROCESS_PRIVATE.

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

При успешном завершении функция pthread_condattr_setpshared() возвращает нулевое значение; в противном случае — код ошибки, обозначающий ее характер.

При успешном завершении функция pthread_condattr_getpshared() возвращает нулевое значение и сохраняет считанное значение атрибута process-shared объекта attr в объекте, адресуемом параметром pshared; в противном случае возвращается код ошибки, обозначающий ее характер.

Ошибки

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

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

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