为什么存在共享_ptr的原子过载
Why atomic overloads for shared_ptr exist
为什么在此处描述的是shared_ptr
的原子过载,而不是对std::atomic
进行专业化,以处理shared_ptr
s。似乎与C 标准库的其余部分使用的面向对象的模式不一致。
并只是为了确保我正确地做到这一点,当使用shared_ptr
s实施读取复制副本iDIOM时,我们需要执行所有访问(读取和写入)以通过这些功能共享指针,对吗?
因为:
std :: Atomic可以与任何可触摸的类型t。
实例化
来源:http://en.cppreference.com/w/cpp/atomic/atomic
和
std::is_trivially_copyable<std::shared_ptr<int>>::value == false;
因此,您不能用std::shared_ptr<>
实例化std::atomic<>
。但是,自动内存管理在多线程中很有用,因此提供了这些过载。但是,这些过载很可能不是没有锁定的(首先使用std::atomic<>
的最大吸引力之一);他们可能使用锁提供同步性。
至于您的第二个问题:是。
相关文章:
- C++模板来检查友元函数的存在
- 既然存在危险,为什么项目要使用-I include开关
- 我们可以访问一个不存在的联盟的成员吗
- C++:对不存在的命名空间使用命名空间指令
- C++quit()函数中可能存在作用域问题
- C++擦除(如果存在)
- g++ 说函数不存在,即使包含正确的标头
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 有了gcc,是否可以链接库,但前提是它存在
- CLANG 编译器 说:变量"PTR"可能未初始化
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- C++Builder中的OnClick事件签名存在问题
- 如何正确地将分支添加到已存在的树中
- 我知道函数调用中存在歧义.有没有办法调用foo()函数
- 如何检查QList中是否存在值
- 在以唯一ptr为值的C++映射中,动态内存何时会被销毁
- 根据某个函数是否存在启用模板
- 如何将分支添加到已存在的TTree:ROOT
- 地图计数确实很重要,或者只是检查是否存在