mtx_timedlock
|
Определено в заголовочном файле
<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)
Смотрите также
|
(C11)
|
время в секундах и наносекундах
(структура) |
|
(C11)
|
блокируется до захвата мьютекса
(функция) |
|
(C11)
|
захватывает мьютекс или возвращает управление без блокировки, если он уже захвачен
(функция) |
|
(C11)
|
освобождает мьютекс
(функция) |
|
C++ documentation
для
timed_mutex::try_lock_until
|
|
|
C++ documentation
для
recursive_timed_mutex::try_lock_until
|
|
Внешние ссылки
| Руководство GNU GCC Libc: Мьютексы ISO-C |