为什么 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.
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.