Операционные системы. Замятин А.В - 61 стр.

UptoLike

Составители: 

61
Инициализация и удаление объекта атрибутов мьютекса
Атрибуты мьютекса могут быть связаны с каждым потоком. Чтобы
изменить атрибуты мьютекса по умолчанию, можно объявить и инициа-
лизировать объект атрибутов мьютекса, а затем изменить определенные
значения. Часто атрибуты мьютекса устанавливаются в одном месте в
начале приложения, чтобы быстро найти и изменить их. После того, как
сформированы атрибуты мьютекса, можно его инициализировать.
Функция
int pthread_mutexattr_init (pthread_mutexattr_t* mattr)
используется, чтобы инициализировать объект атрибутов mattr значе-
ниями по умолчанию. Память для каждого объекта атрибутов выделяет-
ся системой поддержки потоков во время выполнения.
Пример вызова функции pthread_mutexattr_init:
#include <pthread.h>
pthread_mutexattr_t mattr;
int ret;
/* инициализация атрибутов значениями по умолчанию */
ret = pthread_mutexattr_init(&mattr);
Для корректного удаления объекта атрибутов, созданного с помо-
щью функции pthread_mutexattr_init, необходимо вызвать функцию
pthread_mutexattr_destroy. В противном случае возможна утечка памяти,
так как тип pthread_mutexattr_t является закрытым. Она возвращает 0
после успешного завершения или другое значение, если произошла
ошибка. Пример вызова функции pthread_mutexattr_destroy:
#include <pthread.h>
pthread_mutexattr_t mattr;
int ret;
/* удаление атрибутов */
ret = pthread_mutexattr_destroy(&mattr);
Область видимости мьютекса
Областью видимости мьютекса может быть либо некоторый про-
цесс, либо вся система. В первом случае оперировать мьютексом могут
только потоки, созданные процессом, в котором создан и мьютекс. Во
втором случае мьютекс существует в разделяемой памяти и может быть
разделен среди потоков нескольких процессов. По умолчанию мьютекс
создается в области видимости процесса и обладает живучестью про-
цесса.