首页  >  文章  >  后端开发  >  为什么 C 标准库不提供 `std::shared_ptr` 的非原子版本?

为什么 C 标准库不提供 `std::shared_ptr` 的非原子版本?

Patricia Arquette
Patricia Arquette原创
2024-10-27 00:03:02159浏览

Why Doesn't C  's Standard Library Offer a Non-Atomic Version of `std::shared_ptr`?

std::shared_ptr 的非原子等价物

问题:

有吗std::shared_ptr 的替代品缺乏其固有的原子性?此外,为什么 C 标准库不包含非原子选项?

答案:

1。非原子替代方案的可用性:

C 标准库不提供 std::shared_ptr 的非原子变体。但是,第三方库可能会提供此类实现。在 C 11 中引入 std::shared_ptr 之前,许多开发人员创建了自己的引用计数智能指针,可能提供非原子选项。

2. C 11 中原子 std::shared_ptr 的基本原理:

在 C 11 标准化过程中,考虑并最终拒绝了包含 std::shared_ptr 非原子版本的提案。以下论点影响了这一决定:

  • 潜在的误用:用线程代码编写的非原子智能指针可能会引入微妙且难以调试的错误。
  • 一致性和互操作性:拥有单一、一致版本的 std::shared_ptr 有助于库的互操作性并减少混乱。
  • 低性能成本:原子操作具有非- 零开销,但通过使用移动语义可以减轻开销,移动语义避免了向量擦除和插入等常见操作期间的原子操作。
  • 自定义实现:开发人员可以创建自己的非-原子智能指针,如果他们愿意的话。

建议的非原子版本:

尽管在 C 11 中被拒绝,但可能有人提出了非原子版本的建议std::shared_ptr 的原子版本已提交给 Boost 或标准委员会。然而,这些提案并没有获得足够的支持来纳入官方标准。

以上是为什么 C 标准库不提供 `std::shared_ptr` 的非原子版本?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn