next up previous contents
Next: Инициализация мьютекса. Up: Синхронизация потоков. Previous: Инициализация и удаление объекта   Contents

Область видимости мьютекса.

Область видимости мьютекса может быть либо некоторый процесс, либо вся система. Функцияpthread_mutexattr_setpshared() используется, чтобы установить область видимости атрибутов мьютекса.

Если мьютекс был создан с атрибутом pshared, установленным в состояние
PTHREAD_PROCESS_SHARED, и он существует в разделяемой памяти, то он может быть разделен среди потоков нескольких процессов. Если атрибут pshared у мьютекса установлен в PTHREAD_PROCESS_PRIVATE, то оперировать этим мьютексом могут только потоки, созданные тем же самым процессом.

pthread_mutexattr_setpshared() возвращает 0 после успешного завершения, или другое значение, если произошла ошибка. Пример вызова:

#include <pthread.h> 

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) используется для получения области видимости текущего мьютекса потока:

#include <pthread.h>

pthread_mutexattr_t mattr; 

int pshared, ret; 

/* получить атрибут pshared для мьютекса */

ret = pthread_mutexattr_getpshared(&mattr, &pshared);



2003-12-09