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);



2004-06-22