MRB*_*MRB 5 c++ multithreading atomic
我有一个原子成员的类,我想写一个复制构造函数:
struct Foo
{
std::atomic<int> mInt;
Foo() {}
Foo(const Foo& pOther)
{
std::atomic_store(mInt, std::atomic_load(pOther.mInt, memory_order_relaxed), memory_order_relaxed);
}
};
Run Code Online (Sandbox Code Playgroud)
但我不知道我必须使用哪种顺序,因为我不知道将在何时何地调用此复制构造函数.
我可以使用relaxed复制构造函数和赋值运算符的顺序吗?
不,如果您不知道如何使用它,那么memory_order_seq_cst为了安全起见,您应该使用它。如果您使用memory_order_relaxed,您可能会遇到指令重新排序的问题。
| 归档时间: |
|
| 查看次数: |
2052 次 |
| 最近记录: |