Android的原子操作函数



1.原子变量的加法操作
 

int32_t android_atomic_add(int32_t value, volatile int32_t* addr); 
原子变量的减法操作可以通过传递负值给加法操作函数来完成。

2.原子变量的自增和自减操作
 

int32_t android_atomic_inc(volatile int32_t* addr);  
int32_t android_atomic_dec(volatile int32_t* addr); 
3.原子变量的与操作
 

int32_t android_atomic_and(int32_t value, volatile int32_t* addr); 
4.原子变量的或操作
 

int32_t android_atomic_or(int32_t value, volatile int32_t* addr); 
5.原子变量的设置
 

void android_atomic_acquire_store(int32_t value, volatile int32_t* addr);  
void android_atomic_release_store(int32_t value, volatile int32_t* addr); 
6.原子变量的读取
 

int32_t android_atomic_acquire_load(volatile const int32_t* addr);  
int32_t android_atomic_release_load(volatile const int32_t* addr); 
注意 上面这两个函数从功能上看是一样的,区别只是内存屏障位于读取前还是读取后,下面的两组函数也类似。

7.原子变量的比较并交换
 

int android_atomic_acquire_cas(int32_t oldvalue, int32_t newvalue, volatile int32_t* addr);  
int android_atomic_release_cas(int32_t oldvalue, int32_t newvalue, volatile int32_t* addr); 
8.还有两个原子变量的宏定义
 

#define android_atomic_write android_atomic_release_store  
#define android_atomic_cmpxchg android_atomic_release_cas 


猜你喜欢

转载自blog.csdn.net/qwaszx523/article/details/79010485