---
title: C11内存模型
description: "GCC 4.7前，__sync同步原语中默认的内存模型为full barrier模型，__sync原语前后的读写操作均不可做指令重排。为提高流水线执行效率，GCC 4.7合入C11的内存模型，通过__atomic同步原语，由使用者控制需要的屏障级别。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/databasepg/kunpengdbsolution_12_0003.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/databasepg/kunpengdbsolution_12_0003.html
indexId: 0596cb944607e0f4f34bd04310bf024c9f07dda5943d50e66bda38e3017d308379
---
# C11内存模型

GCC 4.7前，__sync同步原语中默认的内存模型为full barrier模型，__sync原语前后的读写操作均不可做指令重排。为提高流水线执行效率，GCC 4.7合入C11的内存模型，通过__atomic同步原语，由使用者控制需要的屏障级别。

| 内存模型 | 说明 |
| --- | --- |
| \_\_ATOMIC\_RELAXED | 对其它读写操作没有同步，只保证本操作是原子的。 |
| \_\_ATOMIC\_CONSUME | load操作，当前线程依赖该原子变量的访存操作不能reorder到该指令之前，对其他线程store操作（release）可见。 |
| \_\_ATOMIC\_ACQUIRE | load操作，当前线程所有访存操作不能reorder到该指令之前，对其他线程store操作（release）可见。 |
| \_\_ATOMIC\_RELEASE | store操作，当前线程所有访存操作不能reorder到该指令之后，对其他线程load操作（consume）可见。 |
| \_\_ATOMIC\_ACQ\_REL | load/store操作，memory\_order\_acquire + memory\_order\_release。 |
| \_\_ATOMIC\_SEQ\_CST | memory\_order\_acq\_rel + 顺序一致性（sequential consistent）。 |
