gcc提供的原子操作函式

2022-04-30 19:48:09 字數 1423 閱讀 5917

gcc從4.1.2提供了__sync_*系列的built-in函式,用於提供加減和邏輯運算的原子操作。

其宣告如下:

type __sync_fetch_and_add (type *ptr, type value, ...)

type __sync_fetch_and_sub (type *ptr, type value, ...)

type __sync_fetch_and_or (type *ptr, type value, ...)

type __sync_fetch_and_and (type *ptr, type value, ...)

type __sync_fetch_and_xor (type *ptr, type value, ...)

type __sync_fetch_and_nand (type *ptr, type value, ...)

type __sync_add_and_fetch (type *ptr, type value, ...)

type __sync_sub_and_fetch (type *ptr, type value, ...)

type __sync_or_and_fetch (type *ptr, type value, ...)

type __sync_and_and_fetch (type *ptr, type value, ...)

type __sync_xor_and_fetch (type *ptr, type value, ...)

type __sync_nand_and_fetch (type *ptr, type value, ...)

這兩組函式的區別在於第一組返回更新前的值,第二組返回更新後的值。type可以是1,2,4或8位元組長度的int型別。

bool __sync_bool_compare_and_swap (type *ptr, type oldval type newval, ...)

type __sync_val_compare_and_swap (type *ptr, type oldval type newval, ...)

這兩個函式提供原子的比較和交換,如果*ptr == oldval,就將newval寫入*ptr,

第乙個函式在相等並寫入的情況下返回true.

第二個函式在返回操作之前的值。

type __sync_lock_test_and_set (type *ptr, type value, ...)

void __sync_lock_release (type *ptr, ...)

第乙個函式將*ptr設為value並返回*ptr操作之前的值。

第二個函式將*ptr置0。

這些函式在多執行緒程式設計的時候使用的較多能提高併發的效能,降低鎖的使用程度。

具體內容可參考:

GCC 提供的原子操作

gcc 提供的原子操作 gcc從4.1.2提供了 sync 系列的built in函式,用於提供加減和邏輯運算的原子操作。其宣告如下 type sync fetch and add type ptr,type value,type sync fetch and sub type ptr,type v...

GCC 提供的原子操作

日期 2011 06 17 gcc從4.1.2提供了 sync 系列的built in函式,用於提供加減和邏輯運算的原子操作。其宣告如下 type sync fetch and add type ptr,type value,type sync fetch and sub type ptr,type...

GCC 提供的原子操作

gcc從4.1.2提供了 sync 系列的built in函式,用於提供加減和邏輯運算的原子操作。其宣告如下 type sync fetch and add type ptr,type value,type sync fetch and sub type ptr,type value,type sy...