首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >锈蚀智能指针std::rc::Rc和std::sync::弧分别类似于C++智能指针、std::shared_ptr和std::atomic_shared_ptr吗?

锈蚀智能指针std::rc::Rc和std::sync::弧分别类似于C++智能指针、std::shared_ptr和std::atomic_shared_ptr吗?
EN

Stack Overflow用户
提问于 2021-04-12 18:18:01
回答 1查看 678关注 0票数 3

锈智能指针std::rc::Rcstd::sync::Arc与C++智能指针std::shared_ptrstd::atomic_shared_ptr之间有相似之处吗?对我来说,它们看起来是一样的,但可能有一些实现上的细微差别。例如,在C++ std::shared_ptr中,控制块中的引用计数是原子的,尽管指针本身不是。铁锈的std::rc::Rc也是一样的吗?

EN

回答 1

Stack Overflow用户

发布于 2021-04-12 19:29:26

例如,在

中,在C++ std::shared_ptr中,控制块中的引用计数是原子的,尽管指针本身不是。铁锈的std::rc::Rc是一样的吗?

不是的。Arcshared_ptr的模拟:引用计数是原子的(因此是线程安全的),数据不是(这就是为什么您通常会看到Arc<Mutex<T>>Arc<RwLock<T>>以允许内部类型的变异,否则Arc只提供只读访问)。

Rc是完全不同步的,实际上不能在线程之间静态地移动(它是!Send)。C++标准库中没有这样的类型。

虽然如果libstdc++认为不涉及多线程,它将使用非线程安全的shared_ptr,但这更像是优化/黑客:https://snf.github.io/2019/02/13/shared-ptr-optimization/

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

https://stackoverflow.com/questions/67063641

复制
相关文章

相似问题

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