lig*_*rek 4 c++ multithreading atomicity c++11
我找到了以下代码,输出总是:
std::atomic<A> is lock free? false
std::atomic<B> is lock free? true
Run Code Online (Sandbox Code Playgroud)
这是代码:
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';
}
Run Code Online (Sandbox Code Playgroud)
我不明白第二个结构专用原子类型怎么能锁定自由而第一个专用原子类型不能无锁?
提前致谢.
http://en.cppreference.com/w/cpp/atomic/atomic_is_lock_free在评论部分真正解释了它.内存对齐和寄存器大小可以允许以原子方式处理2个压缩的int.换句话说,在具有128位寄存器的64位系统上,2个对齐的整数与单个长整数不同.
| 归档时间: |
|
| 查看次数: |
193 次 |
| 最近记录: |