In this description,
m denotes an object of a shared timed mutex type,
rel_type denotes an object of an instantiation of
duration ([time.duration]), and
abs_time denotes an object of an instantiation of
time_point ([time.point]).
Effects: Attempts to obtain
shared lock ownership for the calling thread within the relative
timeout ([thread.req.timing]) specified by rel_time.
If the time
specified by rel_time is less than or equal to rel_time.zero(),
the function attempts to obtain ownership without blocking (as if by calling
try_lock_shared()).
The function shall return within the timeout
specified by rel_time only if it has obtained shared ownership of the
mutex object.
As with try_lock(), there is no guarantee that
ownership will be obtained if the lock is available, but implementations are
expected to make a strong effort to do so.
—end note
]
If an exception is thrown then a shared lock shall not have been acquired for
the current thread.
Synchronization: If try_lock_shared_for() returns true, prior
unlock() operations on the same object synchronize
with ([intro.multithread]) this operation.
Effects: The function attempts to obtain shared ownership of the mutex.
If
abs_time has already passed, the function attempts to obtain shared
ownership without blocking (as if by calling try_lock_shared()).
The
function shall return before the absolute timeout ([thread.req.timing])
specified by abs_time only if it has obtained shared ownership of the
mutex object.
As with try_lock(), there is no guarantee that
ownership will be obtained if the lock is available, but implementations are
expected to make a strong effort to do so.
—end note
]
If an exception is thrown then a shared lock shall not have been acquired for
the current thread.
Synchronization: If try_lock_shared_until() returns true, prior
unlock() operations on the same object synchronize
with ([intro.multithread]) this operation.