linux原子操作

2021-06-05 08:19:02 字數 1361 閱讀 3322

原子操作指的是在執行過程中不會被別的**路徑所中斷的操作,下面列出原子操作相關的函式

1.void atomic_set(atomic_t  *v,int  i); //設定原子變數的值為i

2.atomic_t  v = atomic_init(0); //定義原子變數v並初始化為0

3.atomic_read(atomic_t  *v); //返回原子變數的值

4.void  atomic_add(int  i,atomic_t  *v); //原子變數增加i

5.void  atomic_sub(int  i,atomic_t  *v); //原子變數減少i

6.void  atomic_inc(atomic_t  *v); //原子變數增加1

7.void  atomic_idec(atomic_t  *v); //原子變數減少1

8.int  atomic_inc_and_test(atomic_t  *v); //原子變數執行自增後測試其是否為0,0則返回true

9.int  atomic_dec_and_test(atomic_t  *v); //原子變數執行自減後測試其是否為0,0則返回true

10.int  atomic_sub_and_test(int  i,atomic_t  *v); //原子變數執行減i後測試其是否為0,0則返回true

11.int  atomic_add_return(int  i,atomic_t  *v); //原子變數執行加i,並返回新值

12.int  atomic_sub_return(int  i,atomic_t  *v); //原子變數執行減i,並返回新值

13.int  atomic_inc_return(atomic_t  *v); //原子變數執行自增,並返回新值

14.int  atomic_dec_return(atomic_t  *v); //原子變數執行自減,並返回新值

15.void  set_bit(nr,void  *addr); //設定addr位址的第nr位(寫1)

16.void  clear_bit(nr,void  *addr); //清除addr位址的第nr位(寫0)

17.void  change_bit(nr,void  *addr); //對addr位址的第nr位進行反置

18.test_bit(nr,void  *addr); //返回addr位址的第nr位

19.int  test_and_set_bit(nr,void  *addr);  //18+15

20.int  test_and_clear_bit(nr,void  *addr);  //18+16

21.int  test_and_change_bit(nr,void  *addr);  //18+17

Linux 原子操作

所謂原子操作,就是該操作絕不會在執行完畢前被任何其他任務或事件打斷,也就說,它的最小的執行單位,不可能有比它更小的執行單位,因此這裡 的原子實際是使用了物理學裡的物質微粒的概念。原子操作需要硬體的支援,因此是架構相關的,其api和原子型別的定義都定義在核心原始碼樹的include asm atomi...

linux 原子操作

所謂原子操作,就是該操作絕不會在執行完畢前被任何其他任務或事件打斷,也就說,它的最小的執行單位,不可能有比它更小的執行單位,因此這裡的原子實際是使用了物理學裡的物質微粒的概念。原子操作需要硬體的支援,因此是架構相關的,其api和原子型別的定義都定義在核心原始碼樹的include asm atomic...

Linux 原子操作

所謂原子操作,就是該操作絕不會在執行完畢前被任何其他任務或事件打斷,也就說,它的最小的執行單位,不可能有比它更小的執行單位,因此這裡的原子實際是使用了物理學裡的物質微粒的概念。原子操作需要硬體的支援,因此是架構相關的,其api和原子型別的定義都定義在核心原始碼樹的include asm atomic...