【问题标题】:memory order (consistency model) and C99内存顺序(一致性模型)和 C99
【发布时间】:2014-12-04 18:33:01
【问题描述】:

我看到 C11 有关于 memory_order 的附加功能 (<GCC_SOURCE>/gcc/ginclude/stdatomic.h, GCC Memory Model Wiki page, C11 Wikipedia entry)。

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

【问题讨论】:

    标签: c gcc c99 c11 consistency


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      内存一致性模型是为_Atomic 数据类型和对它们的操作定义的。整个原子概念仅在 C11 中引入,因此这种内存排序约束根本不适用。

      唯一与原子交互的 pre-C11 功能是信号。 C99 只有sig_atomic_t 可以让您在信号处理程序和程序的其余部分之间传递信息。此处的“原子”一词应从主要意义上理解,即一种保证可以整体读取或写入的数据类型,而不是部分数据类型,因为它可能会出现在更广泛的数据类型中。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-19
        • 2012-09-09
        • 1970-01-01
        相关资源
        最近更新 更多