首页 > 后端开发 > C++ > 为什么 C 标准库中没有 std::shared_ptr 的非原子等效项?

为什么 C 标准库中没有 std::shared_ptr 的非原子等效项?

Susan Sarandon
发布: 2024-11-03 03:06:29
原创
844 人浏览过

Why is there no non-atomic equivalent of std::shared_ptr in the C   standard library?

检查 std::shared_ptr 的非原子等效项

简介

C 11 中的智能指针提供了强大的内存管理机制,其中 std::shared_ptr 是共享所有权的主要选择。然而,它的原子性质引入了在某些情况下可能是不必要或不期望的开销。本文探讨了标准库中 std::shared_ptr 的非原子等效项的缺失,并研究了此决定背后的潜在原因。

寻找非原子替代方案

与问题的前提相反,std::shared_ptr 并不是 中唯一的智能指针。以具有原子性。 std::weak_ptr 也是原子的,为需要非拥有引用的场景提供了一个潜在的解决方案。然而,对专用非原子共享指针替代方案的兴趣表明库中存在明显的差距。

排除的原因

尽管非原子的潜在好处原子shared_ptr,C标准委员会选择不在C 11中包含一个。该决定源于2010年Rapperswil会议上的激烈辩论。反对将其包含在内的论点包括:

  • 未来线程使用的潜力:非原子共享指针可能会无意中用于多线程上下文,从而导致微妙且难以检测的错误。
  • 智能指针设计的一致性:统一的shared_ptr在所有用例中统一处理引用计数,简化了互操作性和库的使用。
  • 最小的性能成本:shared_ptr 中的原子操作并不是非常昂贵,特别是考虑到绕过原子操作的移动操作。
  • 用户选择:开发人员可以自由创建自己的非原子引用计数智能如果需要,可以使用指针。

结论

C 11 标准中缺少 std::shared_ptr 的非原子等效项是多方面的。虽然它损害了“按使用量付费”的原则,但它优先考虑一致性、避免错误和最小的性能开销。该决定反映了提供最佳灵活性和确保代码稳健性之间的折衷。

以上是为什么 C 标准库中没有 std::shared_ptr 的非原子等效项?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板