PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] shared_ptr 是否 atomic or thread safe
楼主:
lovejomi
(JOMI)
2019-07-12 11:06:48
这问题一直是让我很难理解
我看了 cppreference, 他提到 你只要用了non-const method的话就不thread safe
问题出在
https://en.cppreference.com/w/cpp/memory/shared_ptr/operator%3D
这不是non-const , 而我看到的程式码(也许早就写错了)
我并没有看到mutex or 一些保护机制去保护shared_ptr assignment
假设一个情况
Thread1
mSp = nullptr; 内部应该是refcount
作者:
steve1012
(steve)
2019-07-12 12:20:00
连结没看到程式码
作者:
sifmelcara
(sifmelcara)
2019-07-12 13:56:00
不同thread操作同一个instance才会没有thread safetyrefcount要atomic的目的就是让不同thread使用指向同个地方的shared_ptr的操作是thread safe的
作者:
eye5002003
(下一夜)
2019-07-12 18:42:00
atomic比较便宜,C++就是这么节俭
作者:
Caesar08
(Caesar)
2019-07-12 19:10:00
所以也有提供
https://tinyurl.com/y5up2jcs
但是因为使用者常常不知道什么时候该用atomic所以后来就直接提供
https://tinyurl.com/yy33lelq
作者:
developers
(rejuvenate)
2019-07-14 11:42:00
目前版本的shared_ptr和weak_ptr只有保证increment和decrement ref count是atomic的,还有resource只会被delete一次,但都不保证存取resource 是atomic。C++20 有atomic_shared_ptr和atomic_weakk_ptr会解决这个问题shared_ptr assignment threadsafe 的写法 用c++17是atomic_store(&ptr, localPtr)来代表 ptr = localPtr后者的结果是undefined behavior 因为有data race
继续阅读
Re: [问题] zj e295. IO 优化
suhorng
Re: [问题] zj e295. IO 优化
firejox
[问题] zj e295. IO 优化
nevikw39
[问题] 范例程式码无法执行
BASICA
[问题] 关于opencv 输出的录影档
asdfg1597860
[问题] 透过system() 删除档案
jayzhuang
[问题] x64 环境下的行程虚拟内存位置
flypaper
[问题] id returned 1 exit status
triumphant10
[问题] 请教关于时间复杂度的分析问题
ac01965159
[问题] the C++ programming language里面的问题
saladim
Links
booklink
Contact Us: admin [ a t ] ucptt.com