【发布时间】:2023-03-24 14:54:02
【问题描述】:
我找到以下代码,输出总是:
std::atomic<A> is lock free? false
std::atomic<B> is lock free? true
这是代码:
struct A { int a[100]; };
struct B { int x, y; };
int main()
{
std::cout << std::boolalpha
<< "std::atomic<A> is lock free? "
<< std::atomic<A>{}.is_lock_free() << '\n'
<< "std::atomic<B> is lock free? "
<< std::atomic<B>{}.is_lock_free() << '\n';
}
我不明白第二个 struct 专门的原子类型怎么可以是无锁的,而第一个专门的原子类型不能是无锁的?
提前致谢。
【问题讨论】:
-
大概你的硬件能够执行足够宽的原子指令,可以容纳两个
ints?
标签: c++ multithreading c++11 atomic