布尔标志由两个线程切换.以下代码是否有意义?
static bool ATOMIC_BOOL_READ( volatile bool& var )
{
return __sync_fetch_and_or(&var, 0);
}
static void ATOMIC_BOOL_WRITE(volatile bool& var, bool newval )
{
__sync_bool_compare_and_swap( &var, !newval, newval);
}
Run Code Online (Sandbox Code Playgroud)
请注意以下几点:
我正在传递一个bool引用.合理?
为了一蹴而就,我也宣称它不稳定.
更新:
我想问的基本问题是:原子性和记忆障碍之间的区别是什么?如果线程A正在变量foo上执行原子内置,则线程B不能对变量foo执行任何操作; 因此创造了一个记忆障碍?