recursive_timed_mutex Class
Represents a timed mutex type. Objects of this type are used to enforce mutual exclusion by using time-limited blocking within a program. Unlike objects of type timed_mutex, the effect of calling locking methods for recursive_timed_mutex
objects is well-defined.
Syntax
class recursive_timed_mutex;
Members
Public Constructors
Name | Description |
---|---|
recursive_timed_mutex | Constructs a recursive_timed_mutex object that's not locked. |
~recursive_timed_mutex Destructor | Releases any resources that are used by the recursive_timed_mutex object. |
Public Methods
Name | Description |
---|---|
lock | Blocks the calling thread until the thread obtains ownership of the mutex . |
try_lock | Attempts to obtain ownership of the mutex without blocking. |
try_lock_for | Attempts to obtain ownership of the mutex for a specified time interval. |
try_lock_until | Attempts to obtain ownership of the mutex until a specified time. |
unlock | Releases ownership of the mutex . |
Requirements
Header: <mutex>
Namespace: std
lock
Blocks the calling thread until the thread obtains ownership of the mutex
.
void lock();
Remarks
If the calling thread already owns the mutex
, the method returns immediately, and the previous lock remains in effect.
recursive_timed_mutex Constructor
Constructs a recursive_timed_mutex
object that is not locked.
recursive_timed_mutex();
~recursive_timed_mutex Destructor
Releases any resources that are used by the recursive_timed_mutex
object.
~recursive_timed_mutex();
Remarks
If the object is locked when the destructor runs, the behavior is undefined.
try_lock
Attempts to obtain ownership of the mutex
without blocking.
bool try_lock() noexcept;
Return Value
true
if the method successfully obtained ownership of the mutex
or if the calling thread already owns the mutex
; otherwise, false
.
Remarks
If the calling thread already owns the mutex
, the function immediately returns true
, and the previous lock remains in effect.
try_lock_for
Attempts to obtain ownership of the mutex
without blocking.
template <class Rep, class Period>
bool try_lock_for(const chrono::duration<Rep, Period>& Rel_time);
Parameters
Rel_time
A chrono::duration object that specifies the maximum amount of time that the method attempts to obtain ownership of the mutex
.
Return Value
true
if the method successfully obtains ownership of the mutex
or if the calling thread already owns the mutex
; otherwise, false
.
Remarks
If the calling thread already owns the mutex
, the method immediately returns true
, and the previous lock remains in effect.
try_lock_until
Attempts to obtain ownership of the mutex
without blocking.
template <class Clock, class Duration>
bool try_lock_for(const chrono::time_point<Clock, Duration>& Abs_time);
bool try_lock_until(const xtime* Abs_time);
Parameters
Abs_time
A point in time that specifies the threshold after which the method no longer attempts to obtain ownership of the mutex
.
Return Value
true
if the method successfully obtains ownership of the mutex
or if the calling thread already owns the mutex
; otherwise, false
.
Remarks
If the calling thread already owns the mutex
, the method immediately returns true
, and the previous lock remains in effect.
unlock
Releases ownership of the mutex
.
void unlock();
Remarks
This method releases ownership of the mutex
only after it is called as many times as lock, try_lock, try_lock_for, and try_lock_until have been called successfully on the recursive_timed_mutex
object.
If the calling thread does not own the mutex
, the behavior is undefined.