为什么 shared_timed_mutex 在 c++14 中定义,而 shared_mutex 在 c++17 中定义?

Why shared_timed_mutex is defined in c++14, but shared_mutex in c++17?

C++11 引入了 std::mutex 及其扩展版本 - std::timed_mutex.

然而,在 c++14 中我们有 std::shared_timed_mutex,但它的 'parent',std::shared_mutex 将在 c++17 中添加。

有什么合理的解释吗?

如果我不打算使用 std::shared_timed_mutex 的 'timed' 功能,它会比提议的 std::shared_mutex 更糟(更慢,消耗更多资源)吗?

Shared mutex原本是有定时的,叫做shared_mutex.

一个实现者 (msvc iirc) 指出他们可以在没有时间的情况下“更便宜”地实现它。特别是,SRWLOCK 是 windows 上的现有原语,足以实现共享互斥锁,但 timed 需要额外的机器。 (通过@t.c。)。 (但是,我相信它不仅 更容易 因为已经写好了,而且从根本上说更昂贵,至少在 x86/64 windows 上)

向标准添加新类型为时已晚,但重命名为时不晚。

所以重命名为shared_timed_mutex,未计时的版本在下一个标准中添加。

Here至少是参与重命名的论文之一

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.