mtx_timedlock
Определено в заголовочном файле <threads.h> |
||
|---|---|---|
int mtx_timedlock( mtx_t *restrict mutex,
const struct timespec *restrict time_point );
|
(с C11) |
Заблокирует текущую нить до тех пор, пока мьютекс, на который указывает mutex, не будет заблокирован или пока не будет достигнуто абсолютное время в календаре, указанное в time_point.
Поскольку эта функция принимает абсолютное время, если требуется временной интервал, необходимо вручную вычислить точку времени календаря.
Поведение не определено, если текущая нить уже заблокировала мьютекс, а мьютекс не рекурсивный.
Поведение не определено, если мьютекс не поддерживает таймаут.
Предыдущие вызовы mtx_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++ для timed_mutex::try_lock_until |
|
Документация C++ для recursive_timed_mutex::try_lock_until |
|
Внешние ссылки
| Справочник GNU GCC Libc: ISO-C-Мьютексы |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/thread/mtx_timedlock