std::shared_lock<Mutex>::try_lock_until
template< class Clock, class Duration > bool try_lock_until( const std::chrono::time_point<Clock,Duration>& timeout_time ); |
(с C++14) |
Пытается заблокировать связанный мьютекс в режиме совместного доступа. Блокируется до достижения указанного timeout_time, или до получения блокировки, в зависимости от того, что произойдёт раньше. При успешном получении блокировки возвращает true, в противном случае возвращает false. Может блокироваться дольше, чем до достижения timeout_time.
Эффективно вызывает mutex()->try_lock_shared_until(timeout_time).
std::system_error выбрасывается, если связанного мьютекса нет или если мьютекс уже заблокирован.
Clock должен удовлетворять требованиям Clock. Поведение не определено, если Mutex не удовлетворяет требованиям SharedTimedLockable. Программа некорректна, если std::chrono::is_clock_v<Clock> является false.(с C++20)
Параметры
| timeout_time | - | максимальная точка во времени для блокировки |
Возвращаемое значение
true если владение мьютексом было успешно приобретено, false в противном случае.
Исключения
- Любые исключения, сгенерированные
mutex()->try_lock_shared_for(timeout_time). - Если связанного мьютекса нет,
std::system_errorс кодом ошибкиstd::errc::operation_not_permitted. - Если мьютекс уже заблокирован,
std::system_errorс кодом ошибкиstd::errc::resource_deadlock_would_occur.
Пример
См. также
| блокирует связанный мьютекс (публичный член-функция) |
|
| пытается заблокировать связанный мьютекс (публичный член-функция) |
|
| пытается заблокировать связанный мьютекс на указанный период времени (публичный член-функция) |
|
| разблокирует связанный мьютекс (публичный член-функция) |
|
| пытается заблокировать (т.е., взять во владение) связанный TimedLockable мьютекс, возвращает, если мьютекс недоступен до достижения указанной точки времени (публичный член-функция std::unique_lock<Mutex>) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/thread/shared_lock/try_lock_until