Namespaces
Variants

mtx_timedlock

From cppreference.net
Определено в заголовочном файле <threads.h>
int mtx_timedlock ( mtx_t * restrict mutex,
const struct timespec * restrict time_point ) ;
(начиная с C11)

Блокирует текущий поток до тех пор, пока мьютекс, на который указывает mutex , не будет заблокирован или пока не будет достигнута абсолютная календарная точка времени TIME_UTC , на которую указывает time_point .

Поскольку эта функция принимает абсолютное время, если требуется продолжительность, точку календарного времени необходимо вычислять вручную.

Поведение не определено, если текущий поток уже заблокировал мьютекс, и мьютекс не является рекурсивным.

Поведение не определено, если мьютекс не поддерживает таймаут.

Предыдущие вызовы mtx_unlock на том же мьютексе синхронизируются-с этой операцией (если данная операция завершается успешно), и все операции lock/unlock на любом заданном мьютексе образуют единый полный порядок (аналогично порядку модификации атомарной переменной)

Содержание

Параметры

mutex - указатель на мьютекс для блокировки
time_point - указатель на абсолютное календарное время, до которого ожидать таймаут

Возвращаемое значение

thrd_success если успешно, thrd_timedout если время ожидания истекло до блокировки мьютекса, thrd_error если произошла ошибка.

Ссылки

  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.26.4.4 Функция mtx_timedlock (стр: 278)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.26.4.4 Функция mtx_timedlock (стр: 381-382)

Смотрите также

время в секундах и наносекундах
(структура)
блокируется до захвата мьютекса
(функция)
захватывает мьютекс или возвращает управление без блокировки, если он уже захвачен
(функция)
освобождает мьютекс
(функция)
C++ documentation для timed_mutex::try_lock_until
C++ documentation для recursive_timed_mutex::try_lock_until

Внешние ссылки

Руководство GNU GCC Libc: Мьютексы ISO-C