cpp/thread/shared timed mutex

The class is a synchronization primitive that can be used to protect shared data from being simultaneously accessed by multiple threads. In contrast to other mutex types which facilitate exclusive access, a has two levels of access:


 * exclusive - only one thread can own the mutex.


 * shared - several threads can share ownership of the same mutex.

Shared mutexes are usually used in situations when multiple readers can access the same resource at the same time without causing data races, but only one writer can do so.

In a manner similar to, provides the ability to attempt to claim ownership of a  with a timeout via the , , ,  member functions.

The class satisfies all requirements of  and.