next up previous contents
Next: Захват мьютекса без блокирования Up: Синхронизация потоков Previous: Инициализация мьютекса   Contents

Запирание мьютекса

Функция pthread_mutex_lock() используется для запирания мьютекса. Если мьютекс уже закрыт, вызывающий поток блокируется и мьютекс ставится в очередь приоритетов. Когда происходит возврат из pthread_mutex_lock(), мьютекс запирается, а вызывающий поток становится его владельцем. pthread_mutex_lock() возвращает 0 - после успешного завершения - или другое значение, если произошла ошибка. Пример вызова:

#include <pthread.h> 

pthread_mutex_t mp; 

int ret; 

ret = pthread_mutex_lock(&mp);

Для открытия мьютекса используется функция pthread_mutex_
unlock
().

Мьютекс должен быть закрыт, а вызывающий поток должен быть владельцем, т. е. тем, кто запирал мьютекс. Пока любые другие потоки ждут доступа к мьютексу, поток в начале очереди не блокирован; pthread_mutex_unlock() возвращает 0 - после успешного завершения - или другое значение, если произошла ошибка. Пример вызова:

#include <pthread.h> 

pthread_mutex_t mp; 

int ret; 

ret = pthread_mutex_unlock(&mp);



2004-06-22