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

UptoLike

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

223
начале приложения, чтобы быстро найти и изменить их. После того, как
сформированы атрибуты мьютекса, можно его инициализировать.
Функция
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);
8.3.3 Область видимости мьютекса
Областью видимости мьютекса может быть либо некоторый про-
цесс, либо вся система. В первом случае оперировать мьютексом могут
только потоки, созданные процессом, в котором создан и мьютекс. Во
втором случае мьютекс существует в разделяемой памяти и может быть
разделен среди потоков нескольких процессов. По умолчанию мьютекс
создается в области видимости процесса и обладает живучестью про-
цесса.
Чтобы установить область видимости атрибутов мьютекса исполь-
зуется функция
int pthread_mutexattr_setpshared(pthread_mutexattr_t* mattr, int)