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 returns within the timeout
specified by 
rel_time only if it has obtained shared ownership of the
mutex object
.[
Note 2: 
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 has not been acquired for
the current thread
.