首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >__atomic_load_n与__atomic_load的区别

__atomic_load_n与__atomic_load的区别
EN

Stack Overflow用户
提问于 2019-08-14 03:00:01
回答 1查看 4.8K关注 0票数 7

我试图了解更多关于C11原子的知识,不明白为什么我会使用__atomic_load_n而不是__atomic_load。文档简单地说明了其中一个是通用的,但是用法看起来是一样的:

内置函数:类型__atomic_load_n (类型*ptr,int )这个内置函数实现原子加载操作。它返回*ptr的内容。 有效的内存顺序变体是__ATOMIC_RELAXED、__ATOMIC_SEQ_CST、__ATOMIC_ACQUIRE和__ATOMIC_CONSUME。 内置函数: void (type * __atomic_load,type *ret,int )--这是原子加载的通用版本。它在*ret中返回*ptr的内容。

005fatomic-Builtins.html

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-14 04:04:10

他们的功能相同,内部GCC,他们是在方便和明确的基础上使用。

如果您有一个要原子加载数据的指针,那么这样做是有意义的:

代码语言:javascript
复制
__atomic_load(__ptr, __dest, mem_order);

如果您有一个值,或者您试图从一个函数返回,那么这样做是有意义的:

代码语言:javascript
复制
return __atomic_load_n(__ptr, mem_order)

显然,它们是同构的,在应用程序代码中,您应该使用<stdatomic.h>而不是编译器内置提供的标准函数。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57487647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档