atomic operations

atomic operations

 

int atomic_xchg ( volatile __global int *p, int val)

Description

Swaps the old value stored at location p with new value given by val. Returns old value.

from: https://www.khronos.org/registry/OpenCL/sdk/1.1/docs/man/xhtml/atomic_xchg.html

 

Linux内核同步原语之原子操作(Atomic)

https://blog.csdn.net/Roland_Sun/article/details/107115267

 

尽可能使用acquire和release语义进行同步

相比ARMv7,ARMv8增加了load-acquire(LDLARB,LDLARH和LDLAR)和store-release(STLLRB,STLLRH和STLLR)指令,这可以直接支持c++原子库中的相关语义。这些指令可以理解成半屏障。这些半屏障指令的执行效率要比全屏障更高,所以在能够使用这种类型的屏障时,我们尽可能acquire和release语义来做线程间的同步。

Read-Acquire用于修饰内存读取指令,一条 read-acquire 的读指令会禁止它后面的内存操作指令被提前执行,即后续内存操作指令重排时无法向上越过屏障。

Write-Release用于修饰内存写指令,一条 write-release 的写指令会禁止它上面的内存操作指令被乱序到写指令完成后才执行,即写指令之前的内存操作指令重排时不会向下越过屏障。

from:

https://support.huaweicloud.com/codeprtr-kunpenggrf/kunpengtaishanporting_12_0049.html

 

 

Linux内核API 同步机制

https://deepinout.com/linux-kernel-api/linux-kernel-api-synchronization-mechanism/linux-kernel-api-synchronization-mechanism.html

 

 

xchg()

#define xchg(ptr, new) \

xchg()的功能是将new的值保存到ptr所指向的地址,并返回ptr地址原先的值

 

posted @   aspirs  阅读(75)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示