gpt4 book ai didi

c++ - shared_ptr 交换线程安全吗?

转载 作者:IT老高 更新时间:2023-10-28 22:20:06 25 4
gpt4 key购买 nike

这里有一些代码片段。

std::shared_ptr<int> global(new int(1)); 


void swapper(int x)
{
std::shared_ptr<int> sp(new int(x));
global.swap(sp);
}

假设我想在并行线程中调用 swapper。那会是线程安全的吗?

我知道 answer .它显示了如果我将值重新分配给 global,那么分配指针是不是线程安全的。

我的问题是 swap 成员函数本身是否是线程安全的。

一方面,shared_ptr 的控制 block 函数是线程安全的。另一方面,我假设我正在交换指向控制 block 的指针,所以它不应该是线程安全的。

那里有什么联系? swap 线程安全吗?

最佳答案

不,swap 不是线程安全的,但还有另一个函数是:

atomic_store(&global, sp);

如果需要,还有返回旧值的 atomic_exchange

关于c++ - shared_ptr 交换线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29541387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com