ВУЗ:
Составители:
225
#include <pthread.h>
pthread_mutex_t mp = PTHREAD_MUTEX_INITIALIZER;
pthread_mutexattr_t mattr;
int ret;
/* инициализация мьютекса значением по умолчанию */
ret = pthread_mutex_init(&mp, NULL);
Когда мьютекс инициализируется, он находится в открытом (раз-
блокированном) состоянии. Статически определенные мьютексы могут
инициализироваться непосредственно значениями по умолчанию с по-
мощью константы PTHREAD_MUTEX_INITIALIZER. Пример инициали-
зации:
/* инициализация атрибутов мьютекса по умолчанию*/
ret = pthread_mutexattr_init(&mattr);
/* смена значений mattr с помощью функций */
ret = pthread_mutexattr_setpshared
(&mattr, PTHREAD_PROCESS_SHARED);
/* инициализация мьютекса произвольными значениями */
ret = pthread_mutex_init(&mp, &mattr);
8.3.5 Запирание мьютекса
Функция pthread_mute_lock используется для запирания или захвата
мьютекса. Аргументом функции является адрес запираемого мьютекса.
Если мьютекс уже заперт, вызывающий поток блокируется и мьютекс
ставится в очередь приоритетов. Когда происходит возврат из
pthread_mute_lock, мьютекс запирается, а вызывающий поток становит-
ся его владельцем. Функция pthread_mute_lock возвращает 0 после
успешного завершения, или другое значение, если произошла ошибка.
Пример вызова:
#include <pthread.h>
pthread_mutex_t mp;
int ret;
ret = pthread_mutex_lock(&mp);
Для открытия (раблокировки) мьютекса используется функция
pthread_mutex_unlock. При этом мьютекс должен быть закрыт, а вызы-
вающий поток должен быть владельцем мьютекса, то есть тем, кто его
запирал. Пока любые другие потоки ждут доступа к мьютексу, его по-
Страницы
- « первая
- ‹ предыдущая
- …
- 223
- 224
- 225
- 226
- 227
- …
- следующая ›
- последняя »
