C++11引入了std::mutex
及其扩展版本-- std::timed_mutex
。
然而,在c++14中我们有std::shared_timed_mutex
,但是它的“父”,std::shared_mutex
将被添加到c++17中。
有什么合理的解释吗?
如果我不使用std::shared_timed_mutex
的“定时”功能,它会比建议的std::shared_mutex
更糟糕(慢一些,消耗更多资源)吗?
发布于 2016-10-23 20:00:01
共享互斥对象最初在其中包含定时,并被称为shared_mutex
。
一位实现者(msvc )指出,他们可以“更便宜”地实现它,而不需要计时。特别是,SRWLOCK
是windows上的一个现有原语,它足以实现共享互斥,但计时需要额外的机器。(电话:@t.c.)(然而,我认为这不仅仅是因为已经写好了,而且从根本上来说更昂贵,至少在x86/64窗口上是这样)
将新类型添加到标准中为时已晚,但重命名还为时不晚。
因此,它被重命名为shared_timed_mutex
,并且在下一个标准中添加了非定时版本。
这里至少是与改名相关的文件之一。
我们建议将shared_mutex重命名为shared_timed_mutex: (a)与其他互斥体的一致性(修复命名不一致); (b)为在某些平台上比shared_timed_mutex更有效的shared_timed_mutex留出空间。
https://stackoverflow.com/questions/40207171
复制相似问题