我如何使用boost :: atomic<>模板,以便我得到真正的128位(16字节)CAS,加载和存储? 问题是即使是强大的提升1.55.0原子库说它现在有128位支持我只能得到假的自旋锁仿真实现。例如。以下代码将失败:
struct ui128_t { uint64_t low, high; };
boost::atomic<ui128_t> atom;
assert(atom.is_lock_free());
我检查了BOOST_ATOMIC_INT128_LOCK_FREE宏,由于某种我不知道的原因,该宏被设置为false。我正在使用MSVC 2012 x64编译器。
答案 0 :(得分:2)
此功能尚未实际发布:它似乎只在“主干”中。
您可以使用命令行
grep -R BOOST_ATOMIC_INT128_LOCK_FREE boost/
找出哪些编译器支持它