cpp/named req/TimedMutex

The requirements extend the  requirements to include inter-thread synchronization.

Requirements


Additionally, for an object of  type:
 * The expression has the following properties
 * Behaves as an atomic operation.
 * Attempts to obtain exclusive ownership of the mutex within the duration specified by . If is less or equal, attempts to obtain the ownership without blocking (as if by ). Otherwise, this function blocks until the mutex is acquired or until the time specified by  passes. It returns within  only if it succeeds, but it is allowed to fail to acquire the mutex even if at some point in time during  it was not owned by another thread. In any case, it returns  if the mutex was acquired and  otherwise.
 * If succeeds, prior  operations on the same object synchronize-with this operation (equivalent to release-acquire std).
 * The behavior is undefined if the calling thread already owns the mutex (except if m is std).
 * An exception may be thrown by clock, time point, or duration during the execution (clocks, time points, and durations provided by the standard library never throw).


 * The expression has the following properties
 * Behaves as an atomic operation.
 * Attempts to obtain exclusive ownership of the mutex within the time left until . If already passed, attempts to obtain the ownership without blocking (as if by ). Otherwise, this function blocks until the mutex is acquired or until the time specified by  passes. It returns before  only if it succeeds, but it is allowed to fail to acquire the mutex even if at some point in time before  it was not owned by another thread. In any case, it returns  if the mutex was acquired and  otherwise.
 * If succeeds, prior  operations on the same object synchronize-with this operation (equivalent to release-acquire std).
 * The behavior is undefined if the calling thread already owns the mutex (except if m is std).
 * An exception may be thrown by clock, time point, or duration during the execution (clocks, time points, and durations provided by the standard library never throw).

Library types
The following standard library types satisfy :
 * std
 * std
 * std