Ответ 1
Общие мьютексы первоначально имели время в нем и назывались shared_mutex
.
Разработчик (msvc iirc) отметил, что они могут реализовать его "дешевле" без времени. В частности, SRWLOCK
- это существующий примитив на окнах, который достаточен для реализации совместного мьютекса, но при необходимости времени требуется дополнительное оборудование. (Via @t.c.). (Тем не менее, я считаю, что это не просто проще, потому что уже написано, но и существенно дороже, хотя бы на x86/64-окошках)
Слишком поздно добавлять новый стандарт к стандарту, но не слишком поздно переименовывать его.
Итак, он был переименован в shared_timed_mutex
, а версия untimed добавлена в следующий стандарт.
Здесь есть хотя бы одна из документов, связанных с переименованием.
Мы предлагаем переименовать shared_mutex в shared_timed_mutex:
(a) для согласованности с другими мьютексами (исправление несогласованности имен);
(b) оставить место для shared_mutex, которое может быть более эффективным на некоторых платформах, чем shared_timed_mutex.