Областью видимости мьютекса может быть либо некоторый процесс, либо вся система. Функция pthread_mutexattr_setpshared() используется, чтобы установить область видимости атрибутов мьютекса.
Если мьютекс был создан с атрибутом pshared, установленным
в состояние PTHREAD_PROCESS_SHARED, и он находится
в разделяемой памяти, то он может быть разделен среди потоков нескольких
процессов. Если атрибут pshared у мьютекса установлен в
PTHREAD_PROCESS_PRIVATE,
то оперировать этим мьютексом могут только потоки, созданные тем же
самым процессом. Функция
pthread_mutexattr_setpshared() возвращает 0 - после успешного
завершения - или другое значение, если произошла ошибка. Пример вызова:
pthread_mutexattr_t mattr;
int ret;
ret = pthread_mutexattr_init(&mattr);
/* переустановка на значение по умолчанию: private */
ret = pthread_mutexattr_setpshared(&mattr,
PTHREAD_PROCESS_PRIVATE);
pthread_mutexattr_getpshared(pthread_mutexattr_t *mattr,
int *pshared)
используется для получения области видимости текущего мьютекса потока:
pthread_mutexattr_t mattr;
int pshared, ret;
/* получить атрибут pshared для мьютекса */
ret = pthread_mutexattr_getpshared(&mattr, &pshared);