Joh*_*nes 17 c++ multithreading swap shared-ptr
以下是一些代码段.
std::shared_ptr<int> global(new int(1));
void swapper(int x)
{
std::shared_ptr<int> sp(new int(x));
global.swap(sp);
}
Run Code Online (Sandbox Code Playgroud)
假设我想调用swapper并行线程.这是线程安全的吗?
我知道这个答案.它显示了如果我重新分配值,如何指定指针不是线程安全的global.
我的问题是swap成员函数本身是否是线程安全的.
一方面,shared_ptr的控制块功能是线程安全的.另一方面,我假设我正在切换到控制块的指针,所以它不应该是线程安全的.
有什么联系?是swap线程安全的?
Mik*_*our 21
不,swap不是线程安全的,但还有另一个功能:
atomic_store(&global, sp);
Run Code Online (Sandbox Code Playgroud)
atomic_exchange如果需要,还会返回旧值.
| 归档时间: |
|
| 查看次数: |
4802 次 |
| 最近记录: |