【发布时间】:2018-11-21 15:10:18
【问题描述】:
考虑以下 C 代码:
static sig_atomic_t x;
static sig_atomic_t y;
int foo()
{
x = 1;
y = 2;
}
第一个问题:C 编译器能否决定将foo 的代码“优化”为y = 2; x = 1(即y 的内存位置在x 的内存位置之前更改)?这将是等效的,除非涉及多个线程或信号。
如果第一个问题的答案是“是”:如果我真的想要保证x 存储在y 之前,我该怎么办?
【问题讨论】:
标签: c thread-safety