gpt4 book ai didi

C++11 std::atomic 复制构造函数的线程安全

转载 作者:太空狗 更新时间:2023-10-29 20:39:25 28 4
gpt4 key购买 nike

我的原子容器遇到了一些问题,看到了 this link .

为什么 std::atomic 不可复制构造?解决方案似乎是 this他们只是将 T 值传递给具有原子加载函数的非原子构造函数(如果我没记错的话)。

那么一般来说,这个拷贝构造函数线程安全吗?

template<typename T>
struct MobileAtomic
{
std::atomic<T> atomic;

explicit MobileAtomic(std::atomic<T> const& a) : atomic(a.load()) {}

};

最佳答案

为什么 std::atomic 不可复制构造?

当您请求可复制构造的 atomic 时,您是在请求将单线程顺序一致性的“正常”规则应用于不遵循这些规则的变量。

本质上,没有通用的解决方案。

通过使用您在问题中显示的构造函数,您牺牲了确定性结果,因为您无法保证在构造完成后源对象和目标对象是等价的。

关于C++11 std::atomic<T> 复制构造函数的线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27790116/

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