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



2004-06-22