std::recursive_timed_mutex::try_lock
bool try_lock() noexcept; | (с C++11) |
Попытка заблокировать мьютекс. Возвращает значение немедленно. При успешной блокировке возвращает true, в противном случае — false.
Эта функция может ошибочно возвращать false даже если мьютекс в данный момент не заблокирован ни одной другой нитью.
Поток может многократно вызывать try_lock для рекурсивного мьютекса. Успешные вызовы try_lock увеличивают счётчик владения: мьютекс будет разблокирован только после того, как поток выполнит соответствующее количество вызовов unlock.
Максимальное количество уровней владения не определено. Вызов try_lock вернёт false в случае превышения этого числа.
Предыдущая операция unlock() с тем же мьютексом синхронизируется (как определено в std::memory_order) с этой операцией, если она возвращает true. Обратите внимание, что предыдущий lock() не синхронизируется с этой операцией, если она возвращает false.
Параметры
(нет)
Значение возврата
true если блокировка была успешно получена, в противном случае false.
Исключения
Не выбрасывает никаких исключений.
Пример
См. также
| блокирует мьютекс, блокируется, если мьютекс недоступен (публичный член-функция) |
|
| пытается заблокировать мьютекс, возвращается, если мьютекс был недоступен в течение указанного временного интервала (публичный член-функция) |
|
| пытается заблокировать мьютекс, возвращается, если мьютекс был недоступен до тех пор, пока не будет достигнута указанная точка времени (публичный член-функция) |
|
| разблокирует мьютекс (публичный член-функция) |
|
Документация C для mtx_trylock |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/thread/recursive_timed_mutex/try_lock