相关疑难解决方法(0)

这是原子地读取和写入bool的正确方法吗?

布尔标志由两个线程切换.以下代码是否有意义?

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执行任何操作; 因此创造了一个记忆障碍?

c++ multithreading atomic

3
推荐指数
2
解决办法
4189
查看次数

标签 统计

atomic ×1

c++ ×1

multithreading ×1