记忆顺序(一致性模型)和C99

时间:2014-12-04 18:33:01

标签: c gcc c99 c11 consistency

我看到C11在memory_order(<GCC_SOURCE>/gcc/ginclude/stdatomic.h附近有其他功能, GCC Memory Model Wiki pageC11 Wikipedia entry)。

我很想知道C99中的默认行为是什么?它是否默认采用顺序一致性模型?

2 个答案:

答案 0 :(得分:3)

未定义。多线程编程超出了早期C标准的范围。如果您正在编写多线程C99程序,那么您依赖于编译器的承诺,而不是C标准。

答案 1 :(得分:2)

_Atomic数据类型及其操作定义了内存一致性模型。原子论的这个概念仅在C11中引入,因此这种记忆排序约束根本不适用。

与原子相互作用的唯一前C11特征是信号。 C99只有sig_atomic_t,可以让您在信号处理程序和程序的其余部分之间传递信息。这里的术语是&#34; atomic&#34;从主要意义上讲,应理解为保证完整读取或写入的数据类型,而不是部分更广泛的数据类型。

在C11中,某些类型的_Atomic数据类型也保证在信号处理程序中表现良好。因此,即使没有线程,您也可能对memory_order感兴趣。