我试图学习有关C11原子的更多信息,但看不到为什么要使用__atomic_load_nover __atomic_load。该文档仅声明一个是通用的,但用法看起来是相同的:
内置函数:类型__atomic_load_n(类型* ptr,int内存)此内置函数实现原子加载操作。它返回* ptr的内容。
有效的内存顺序变量是__ATOMIC_RELAXED,__ATOMIC_SEQ_CST,__ATOMIC_ACQUIRE和__ATOMIC_CONSUME。
内置函数:void __atomic_load(类型* ptr,类型* ret,int内存)这是原子负载的通用版本。它在* ret中返回* ptr的内容。
https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html
它们的功能相同,并且在 GCC 内部基于方便和清晰的原则使用它们。
如果您有一个想要自动加载数据的指针,那么这样做是有意义的:
__atomic_load(__ptr, __dest, mem_order);
Run Code Online (Sandbox Code Playgroud)
如果你有一个值或者你试图从一个函数返回,那么这样做是有意义的:
return __atomic_load_n(__ptr, mem_order)
Run Code Online (Sandbox Code Playgroud)
显然,它们彼此同构,并且在应用程序代码中,您应该使用<stdatomic.h>非编译器内置函数提供的标准函数。
| 归档时间: |
|
| 查看次数: |
166 次 |
| 最近记录: |