The std::timed_mutex class provides support for
locks with timeouts on top of the basic mutual exclusion and synchronization
facility provided by std::mutex. Prior to accessing the
data protected by the mutex, the mutex must be locked
by calling lock(),
try_lock(), try_lock_for()
or try_lock_until().
If a lock is already held by another thread then an attempt to acquire
the lock will fail (try_lock()),
block until the lock can be acquired (lock()),
or block until the lock can be acquired or the lock attempt times out (try_lock_for() or try_lock_until()).
Once a lock has been acquired (whichever function was used to acquire it)
it must be released by calling unlock()
before another thread can acquire the lock on the mutex.
std::timed_mutex
meets the TimedLockable
requirements.
For details on the members, see std::timed_mutex class members.
class timed_mutex { public: timed_mutex(timed_mutex const&)=delete; timed_mutex& operator=(timed_mutex const&)=delete; timed_mutex(); ~timed_mutex(); void lock(); void unlock(); bool try_lock(); template<typename Rep,typename Period> bool try_lock_for(std::chrono::duration<Rep,Period> const& relative_time); template<typename Clock,typename Duration> bool try_lock_until(std::chrono::time_point<Clock,Duration> const& absolute_time); };
Header
#include <mutex>