1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| # 这些内置函数执行名称建议的操作,并返回先前在内存中的值。 # 将指针 ptr 指向的变量的值加上 value,并返回原来的值。 type __sync_fetch_and_add (type *ptr, type value, ...)
# 将指针 ptr 指向的变量的值减去 value,并返回原来的值。 type __sync_fetch_and_sub (type *ptr, type value, ...)
# 将指针 ptr 指向的变量的值按位或上 value,并返回原来的值。 type __sync_fetch_and_or (type *ptr, type value, ...)
# 将指针 ptr 指向的变量的值相与上 value,并返回原来的值。 type __sync_fetch_and_and (type *ptr, type value, ...)
# 将指针 ptr 指向的变量的值异或上 value,并返回原来的值。 type __sync_fetch_and_xor (type *ptr, type value, ...)
# 将指针 ptr 指向的变量的值取反后与 value值相与,并返回原来的值。 type __sync_fetch_and_nand (type *ptr, type value, ...)
# 这些内置函数执行名称建议的操作,并返回新值。 # 将指针 ptr 指向的变量的值加上 value 的值,并返回新的值。 type __sync_add_and_fetch (type *ptr, type value, ...)
# 将指针 ptr 指向的变量的值减去 value 的值,并返回新的值。 type __sync_sub_and_fetch (type *ptr, type value, ...)
# 将指针 ptr 指向的变量的值与 value 的值相或,并返回新的值。 type __sync_or_and_fetch (type *ptr, type value, ...)
# 将指针 ptr 指向的变量的值与 value 的值相与,并返回新的值。 type __sync_and_and_fetch (type *ptr, type value, ...)
# 将指针 ptr 指向的变量的值与 value 的值相异或,并返回新的值。 type __sync_xor_and_fetch (type *ptr, type value, ...)
# 将指针 ptr 指向的变量的值取反并与 value 的值相与,并返回新的值。 type __sync_nand_and_fetch (type *ptr, type value, ...)
# 这些内置函数执行原子比较和交换。 # 将指针 *ptr 指向的变量的值等于 oldval 值,则将newval写入*ptr,并且返回true。 bool __sync_bool_compare_and_swap (type *ptr, type oldval type newval, ...)
# 将指针 *ptr 指向的变量的值等于 oldval 值,则将newval写入*ptr,并且返回 *ptr 之前的值。 type __sync_val_compare_and_swap (type *ptr, type oldval type newval, ...)
# 该内置函数产生完整的内存屏障。 __sync_synchronize (...)
# 将 value 值写入到指针 *ptr 变量中,并且返回操作之前的值。 type __sync_lock_test_and_set (type *ptr, type value, ...)
# 将0写入到 *ptr 变量中,并对其解锁。 void __sync_lock_release (type *ptr, ...) # __sync_lock_release 是GCC内置的原子操作函数之一,用于释放一个锁。这个函数通常与 __sync_lock_test_and_set 配合使用,用于实现基本的自旋锁。自旋锁是一种同步机制,它会一直尝试获取锁,如果锁已经被占用,则一直忙等待(自旋)直到获取到锁为止。
|