Shared mutex originally had timing in it, and was called
An implementor (msvc iirc) noted they could implement it "cheaper" without timing. In particular,
SRWLOCK is an existing primitive on windows that is sufficient to implement shared mutex, but timed requires extra machinery. (Via @t.c.). (However, I believe it isn't just easier because already written, but also fundamentally more expensive, at least on x86/64 windows)
It was too late to add a new type to the standard, but not too late to rename it.
So it was renamed to
shared_timed_mutex, and the untimed version added in next standard.
Here is at least one of the papers involved in the rename.
We propose to rename shared_mutex to shared_timed_mutex:
(a) for consistency with the other mutexes (fixing naming inconsistency);
(b) to leave room for a shared_mutex which can be more efficient on some platforms than shared_timed_mutex.