The TimedMutex requirements extend the TimedLockable requirements to include inter-thread synchronization.
Additionally, for an object m
of TimedMutex type:
m.try_lock_for(duration)
has the following properties duration
. If duration
is less or equal duration.zero()
, attempts to obtain the ownership without blocking (as if by try_lock()
). Otherwise, this function blocks until the mutex is acquired or until the time specified by duration
passes. It returns within duration
only if it succeeds, but it is allowed to fail to acquire the mutex even if at some point in time during duration
it was not owned by another thread. In any case, it returns true
if the mutex was acquired and false
otherwise. try_lock_for(duration)
succeeds, prior unlock()
operations on the same object synchronize-with this operation (equivalent to release-acquire std::memory_order
). std::recursive_timed_mutex
). m.try_lock_until(time_point)
has the following properties time_point
. If time_point
already passed, attempts to obtain the ownership without blocking (as if by try_lock()
). Otherwise, this function blocks until the mutex is acquired or until the time specified by time_point
passes. It returns before time_point
only if it succeeds, but it is allowed to fail to acquire the mutex even if at some point in time before time_point
it was not owned by another thread. In any case, it returns true
if the mutex was acquired and false
otherwise. try_lock_until(time_point)
succeeds, prior unlock()
operations on the same object synchronize-with this operation (equivalent to release-acquire std::memory_order
). std::recursive_timed_mutex
). The following standard library types satisfy TimedMutex:
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 2093 | C++11 | timeout-related exceptions were missing in the specification | mentioned |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/TimedMutex