首页 > 解决方案 > `movl` 是 x86_64 cpu 上的原子操作吗?

问题描述

int64 g_some_global_variable = 1;

// thread 1
int64 a = g_some_global_variable;
// thread2
g_some_global_variable = 10;

线程 1 将生成如下 asm 代码:

movl    a(%rip), %eax

我想知道,线程 1 应该总是得到 1 或 10,就没有其他可能了吗?正确的?

标签: assemblyx86atomic

解决方案


推荐阅读