std::shared_lock<Mutex>:: try_lock_for
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Shared locking | ||||
|
shared_lock::try_lock_for
|
||||
| Modifiers | ||||
| Observers | ||||
| Non-member functions | ||||
|
template
<
class
Rep,
class
Period
>
bool try_lock_for ( const std:: chrono :: duration < Rep,Period > & timeout_duration ) ; |
(начиная с C++14) | |
Пытается заблокировать связанный мьютекс в режиме разделения. Блокируется до истечения указанного
timeout_duration
или до получения блокировки, в зависимости от того, что наступит раньше. При успешном получении блокировки возвращает
true
, в противном случае возвращает
false
. Фактически вызывает
mutex
(
)
-
>
try_lock_shared_for
(
timeout_duration
)
.
Эта функция может блокироваться дольше, чем timeout_duration из-за задержек планирования или конкуренции за ресурсы.
Стандарт рекомендует использовать монотонные часы для измерения длительности. Если реализация использует системные часы вместо этого, время ожидания также может быть чувствительным к корректировкам часов.
std::system_error выбрасывается, если нет связанного мьютекса или если мьютекс уже заблокирован.
Поведение не определено, если
Mutex
не удовлетворяет требованиям
SharedTimedLockable
.
Содержание |
Параметры
| timeout_duration | - | максимальная длительность блокировки |
Возвращаемое значение
true если владение мьютексом было успешно получено, false в противном случае.
Исключения
- Любые исключения, выброшенные mutex ( ) - > try_lock_shared_for ( timeout_duration ) .
- Если связанный мьютекс отсутствует, std::system_error с кодом ошибки std::errc::operation_not_permitted .
- Если мьютекс уже заблокирован, std::system_error с кодом ошибки std::errc::resource_deadlock_would_occur .
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
пытается заблокировать (т.е. завладеть) связанный мьютекс
TimedLockable
, возвращает управление, если мьютекс был недоступен в течение указанного периода времени
(публичная функция-член
std::unique_lock<Mutex>
)
|
|
|
блокирует связанный мьютекс
(публичная функция-член) |
|
|
пытается заблокировать связанный мьютекс
(публичная функция-член) |
|
|
пытается заблокировать связанный мьютекс до указанного момента времени
(публичная функция-член) |
|
|
разблокирует связанный мьютекс
(публичная функция-член) |