PTHREAD_MUTEX_CONSISTENT(3)

ИМЯ
pthread_mutex_consistent - делает устойчивый мьютекс согласованным

ОБЗОР
#include <pthread.h>

int pthread_mutex_consistent(pthread_mutex_t *mutex);

Компилируется и компонуется вместе с -pthread.

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

pthread_mutex_consistent():
    _POSIX_C_SOURCE >= 200809L

ОПИСАНИЕ
Данная функция делает устойчивый мьютекс согласованным, если он находится в рассогласованном состоянии. Мьютекс может остаться в рассогласованном состоянии, если владелец завершил работу, удерживая мьютекс; в этом случае следующий владелец, захвативший мьютекс вызовом pthread_mutex_lock(), получит уведомление возвращаемым значением EOWNERDEAD .

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении pthread_mutex_consistent() возвращает 0. В противном случае возвращается положительный номер, указывающий на причину ошибки.

ОШИБКИ

EINVAL
    Мьютекс находит не в согласованном состоянии и не в рассогласованном состоянии.

ВЕРСИИ
Функция pthread_mutex_consistent() впервые появилась в glibc 2.12.

СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2008.

ЗАМЕЧАНИЯ
Функция pthread_mutex_consistent() просто информирует реализацию, что состояние (общие данные) защищаемые мьютексом, были восстановлены в согласованное состояние и что теперь с мьютексом можно выполнять обычные операции. Перед вызовом pthread_mutex_consistent() приложение само должно приводить данные в согласованное состояние.

До появления pthread_mutex_consistent() в POSIX, в glibc определялся следующий эквивалент нестандартной функции, если определён _GNU_SOURCE:

int pthread_mutex_consistent(const pthread_mutex_t *mutex);

Данный имеющийся только в GNU программный интерфейс, впервые появившийся в glibc 2.4, в настоящее время устарел и не должен использоваться в новых программах.

ПРИМЕР
Смотрите pthread_mutexattr_setrobust(3).

СМОТРИТЕ ТАКЖЕ
pthread_mutexattr_init(3), pthread_mutex_lock(3), pthread_mutexattr_setrobust(3), pthread_mutexattr_getrobust(3), pthreads(7)