A shared recursive mutex in standard C++
<p>There is a <a href="http://en.cppreference.com/w/cpp/thread/shared_mutex" rel="noreferrer"><code>shared_mutex</code></a> class planned for C++17. And <a href="http://en.cppreference.com/w/cpp/thread/shared_timed_mutex" rel="noreferrer"><code>shared_timed_mutex</code></a> already in C++14. (Who knows why they came in that order, but whatever.) Then there is a <a href="http://en.cppreference.com/w/cpp/thread/recursive_mutex" rel="noreferrer"><code>recursive_mutex</code></a> and a <a href="http://en.cppreference.com/w/cpp/thread/recursive_timed_mutex" rel="noreferrer"><code>recursive_timed_mutex</code></a> since C++11. What I need is a <code>shared_recursive_mutex</code>. Did I miss something in the standard or do I have to wait another three years for a standardized version of that? </p>

<p>If there is currently no such facility, what would be a simple (first priority) and efficient (2nd priority) implementation of such a feature using standard C++ only?</p>