https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102962
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- FWIW, POSIX says this for its equivalent of lock_shared: If the Thread Execution Scheduling option is not supported, it is implementation-defined whether the calling thread acquires the lock when a writer does not hold the lock and there are writers blocked on the lock. https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_rwlock_rdlock.html The C++ proposals for shared mutex said: An implementation is strongly encouraged to block other threads requesting shared ownership while this thread is blocked waiting for exclusive ownership, lest the blocked thread be starved by readers. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3568.html However, that was for the upgrade lock functionality, which never made it into the standard. The final wording for shared_mutex (and shared_timed_mutex) do not even have that encouragement.