next up previous contents
Next: Область видимости мьютекса. Up: Синхронизация потоков. Previous: Блоки взаимного исключения (мьютексы   Contents

Инициализация и удаление объекта атрибутов мьютекса.

Функция pthread_mutexattr_init() используется, чтобы инициализировать атрибуты, связанные с объектом, значениями по умолчанию. Память для каждого объекта атрибутов выделяется системой поддержки потоков во врем выполнения. mattr - закрытый тип, который содержит системный объект атрибутов. Возможные значения типа mattr - PTHREAD_PROCESS_PRIVATE (по умолчанию) и PTHREAD_PROCESS_SHARED. При вызове этой функции значение по умолчанию атрибута pshared равно
PTHREAD_PROCESS_PRIVATE, что означает, что инициализированный мьютекс может использоваться в пределах процесса.

Прежде, чем повторно инициализировать объект атрибутов мьютекса, он должен сначала быть удален функцией pthread_mutexattr_destroy(). Вызов функции pthread_mutexattr_init() возвращает указатель на закрытый объект. Если объект не удалить, может произойти утечка памяти. pthread_mutexattr_init() возвращает 0 после успешного завершения, или другое значение, если произошла ошибка.

Пример вызова функции:

#include <pthread.h>

pthread_mutexattr_t mattr; 

int ret; 

/* инициализация атрибутов значениями по умолчанию */ 

ret = pthread_mutexattr_init(&mattr);

Функция pthread_mutexattr_destroy() удаляет объект атрибутов, созданный с помощью функцииpthread_mutexattr_init(). Она возвращает 0 после успешного завершения, или другое значение, если произошла ошибка. Пример вызова:

#include <pthread.h>

pthread_mutexattr_t mattr; 

int ret; 

/* удаление атрибутов */ 

ret = pthread_mutexattr_destroy(&mattr);



2003-12-09