std::shared_lock<Mutex>::try_lock_for

From cppreference.com
< cpp‎ | thread‎ | shared lock
 
 
Concurrency support library
Threads
(C++11)
(C++20)
(C++20)
this_thread namespace
(C++11)
(C++11)
(C++11)
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11)(deprecated in C++20)
(C++11)(deprecated in C++20)
Free functions for atomic operations
Free functions for atomic flags
Memory ordering
Mutual exclusion
(C++11)
Generic lock management
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
Condition variables
(C++11)
Semaphores
Latches and barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
(C++11)
 
 
template< class Rep, class Period >
bool try_lock_for( const std::chrono::duration<Rep,Period>& timeout_duration );
(since C++14)

Tries to lock the associated mutex in shared mode. Blocks until specified timeout_duration has elapsed or the lock is acquired, whichever comes first. On successful lock acquisition returns true, otherwise returns false. Effectively calls mutex()->try_lock_shared_for(timeout_duration).

This function may block for longer than timeout_duration due to scheduling or resource contention delays.

The standard recommends that a steady clock is used to measure the duration. If an implementation uses a system clock instead, the wait time may also be sensitive to clock adjustments.

std::system_error is thrown if there is no associated mutex or if the mutex is already locked.

The behavior is undefined if Mutex does not meet the SharedTimedLockable requirements.

Parameters

timeout_duration - maximum duration to block for

Return value

true if the ownership of the mutex has been acquired successfully, false otherwise.

Exceptions

  • Any exceptions thrown by mutex()->try_lock_shared_for(timeout_duration)

Example

See also

attempts to lock (i.e., takes ownership of) the associated TimedLockable mutex, returns if the mutex has been unavailable for the specified time duration
(public member function of std::unique_lock<Mutex>)
locks the associated mutex
(public member function)
tries to lock the associated mutex
(public member function)
tries to lock the associated mutex, until a specified time point
(public member function)
unlocks the associated mutex
(public member function)