原子操作指令用於確保多執行緒環境下對共享數據進行操作的原子性,即操作要麼全部完成,要麼全部不完成。以下是一些常見的原子操作指令:
整型原子操作:
設定原子變數的值:`void atomic_set(atomic_t *v, int i)`
獲取原子變數的值:`atomic_read(atomic_t *v)`
原子變數加/減:`void atomic_add(int i, atomic_t *v)` 和 `void atomic_sub(int i, atomic_t *v)`
原子變數自增/自減:`void atomic_inc(atomic_t *v)` 和 `void atomic_dec(atomic_t *v)`
操作並測試:`int atomic_inc_and_test(atomic_t *v)` 和 `int atomic_dec_and_test(atomic_t *v)`
操作並返回:`int atomic_add_return(int i, atomic_t *v)` 和 `int atomic_sub_return(int i, atomic_t *v)`
原子變數加/減和自增/自減操作,並返回新的值:`int atomic_inc_return(atomic_t *v)` 和 `int atomic_dec_return(atomic_t *v)`
位原子操作:
設定位:`void set_bit(nr, void *addr)`
清除位:`void clear_bit(nr, void *addr)`
以上指令可以在不同的程式語言和作業系統中找到,它們提供了對共享數據進行原子操作的強大工具。