首页  >  文章  >  后端开发  >  为什么 C 没有非原子 `std::shared_ptr`?

为什么 C 没有非原子 `std::shared_ptr`?

Linda Hamilton
Linda Hamilton原创
2024-11-01 01:21:02791浏览

 Why Doesn't C   Have a Non-Atomic `std::shared_ptr`?

std::shared_ptr 的非原子等价物以及为什么它在

std::shared_ptr 已获得突出地位原子递增和递减共享所有权智能指针。然而,问题是是否存在非原子等价物。

1。非原子替代选项

尽管对<内存>进行了广泛的检查,但标头,没有可以轻松访问 std::shared_ptr 的非原子等效项。然而,也有一些超出标准的解决方案。

2.为什么 C 11 中不包含非原子 std::shared_ptr

C 11 中缺少非原子版本源于 2010 年 Rapperswil 会议期间进行的讨论。

反对非原子选项的原因:

  • 未原子性编写的代码稍后与线程一起使用时可能会出现问题,从而导致调试挑战。
  • 优点具有跨库行为一致的通用shared_ptr。
  • 原子性对性能的影响最小,可以通过高效的移动构造和移动分配操作来缓解。
  • 自定义非原子共享的可用性如果需要,可以使用指针。

基于这些论点,语言工作组 (LWG) 决定不在 C 11 中引入 share_ptr 的非原子变体。

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

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