Областью видимости переменной состояния может быть либо процесс, либо
вся система, как и для мьютексов. Если переменная состояния создана
с атрибутом pshared, установленным в состояние PTHREAD_PROCESS_SHARED,
и она находится в разделяемой памяти, то эта переменная может разделяться
среди потоков нескольких процессов. Если же атрибут pshared
установлен в значение
PTHREAD_PROCESS_PRIVATE (по умолчанию), то
лишь потоки, созданные тем же самым процессом, могут оперировать этой переменной.
Функция pthread_condattr_setpshared() используется, чтобы
установить область видимости переменной состояния. Она возвращает
0 - после успешного завершения. Любое другое значение указывает, что
произошла ошибка. Пример использования функции:
pthread_condattr_t cattr;
int ret;
/* Область видимости - все процессы */
ret = pthread_condattr_setpshared(&cattr,
PTHREAD_PROCESS_SHARED);
/* Внутренняя переменная для процесса */
ret = pthread_condattr_setpshared(&cattr,
PTHREAD_PROCESS_PRIVATE);
int pthread_condattr_getpshared(
const pthread_condattr_t *cattr, int *pshared)
используется для получения области видимости
переменной состояния.