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