複製鏈接
請複製以下鏈接發送給好友

原子變量

鎖定
Linux內核中比較常見的一個名詞,是原子操作的基本單位。
中文名
原子變量
類    別
科學

目錄

原子變量描述

一般我們在程序中修改一個代碼的值會分為3步:讀取==> 修改 ==> 回寫。在允許多線程的程序中而對於某一資源我們只希望有一個線程操作它,我會想使用全局變量去作為標記變量。兩個線程A、B,當A讀取完該全局變量後正在修改它的值,而這時B進程正在讀取該全局變量,對於B進程而言此全局變量的值和A進程是一樣,這樣A、B都可以正常進行,就與我們的意願相違了,所以我們會想是不是可以定義一個變量,將對一個變量值的讀取、修改、回寫變成一個不可打斷的操作,於是我們就有了原子變量。

原子變量舉例

常用原子操作函數舉例:
atomic_t v = ATOMIC_INIT(0); //定義原子變量v並初始化為0
atomic_read(atomic_t *v); //返回原子變量的值
void atomic_inc(atomic_t *v); //原子變量增加1
void atomic_dec(atomic_t *v); //原子變量減少1
int atomic_dec_and_test(atomic_t *v); //自減操作後測試其是否為0,為0則返回true,否則返回false。