原子操作:不能被本cpu和其他cpu中斷的操作
cache line
鎖cache line優於鎖資料匯流排
cpu平台本身可以保證的原子操作
對齊的不對齊的
lock字首
--**示例
。 cmpxchg(ptr,old,new):比較*ptr和old的值,相同就把new的值給ptr。
實現方式:通過巨集定義
#define cmpxchg(ptr,old,new) __cmpxchg(ptr,old,new,sizeof(*(ptr))
#define __cmpxchg(ptr,old,new,sizeof(*(ptr)) __raw_cmpxchg(ptr),(old),(new),(size),lock_prefix)
自動帶lock字首的指令
xchg
事務記憶體(tsx on intel)(ibm power系列)
樂觀方式,最後驗證如果不通過就回滾。
intel的開發者手冊
ibm power系列的描述
linux kernel中的原子操作
-atomic_t的定義
typedef structatomic_t;
之所以定義成atomic_t是防止atomic的誤操作,在編譯的時候就可以檢查出來。
atomic_t的操作
--所有的操作都定義在include/linux/atomic.h中以及include/asm/atomic.h中
--常用的atomic操作:
.atomic_init(i)
.atomic_set(v,i) .
Linux 原子操作
所謂原子操作,就是該操作絕不會在執行完畢前被任何其他任務或事件打斷,也就說,它的最小的執行單位,不可能有比它更小的執行單位,因此這裡 的原子實際是使用了物理學裡的物質微粒的概念。原子操作需要硬體的支援,因此是架構相關的,其api和原子型別的定義都定義在核心原始碼樹的include asm atomi...
linux原子操作
原子操作指的是在執行過程中不會被別的 路徑所中斷的操作,下面列出原子操作相關的函式 1.void atomic set atomic t v,int i 設定原子變數的值為i 2.atomic t v atomic init 0 定義原子變數v並初始化為0 3.atomic read atomic ...
linux 原子操作
所謂原子操作,就是該操作絕不會在執行完畢前被任何其他任務或事件打斷,也就說,它的最小的執行單位,不可能有比它更小的執行單位,因此這裡的原子實際是使用了物理學裡的物質微粒的概念。原子操作需要硬體的支援,因此是架構相關的,其api和原子型別的定義都定義在核心原始碼樹的include asm atomic...