首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么shared_timed_mutex是在c++14中定义的,而shared_mutex是在c++17中定义的?

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

Stack Overflow用户
提问于 2016-10-23 19:52:40
回答 1查看 7K关注 0票数 40

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更糟糕(慢一些,消耗更多资源)吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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留出空间。

票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40207171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档