Android的原子操作函数

原文地址:http://book.51cto.com/art/201504/474434.htm


6.1.1  Android的原子操作函数

1.原子变量的加法操作
 

 
 
  1. int32_t android_atomic_add(int32_t value, volatile int32_t* addr); 

原子变量的减法操作可以通过传递负值给加法操作函数来完成。

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

 
 
  1. int32_t android_atomic_inc(volatile int32_t* addr);  
  2. int32_t android_atomic_dec(volatile int32_t* addr); 

3.原子变量的与操作
 

 
 
  1. int32_t android_atomic_and(int32_t value, volatile int32_t* addr); 

4.原子变量的或操作
 

 
 
  1. int32_t android_atomic_or(int32_t value, volatile int32_t* addr); 

5.原子变量的设置
 

 
 
  1. void android_atomic_acquire_store(int32_t value, volatile int32_t* addr);  
  2. void android_atomic_release_store(int32_t value, volatile int32_t* addr); 

6.原子变量的读取
 

 
 
  1. int32_t android_atomic_acquire_load(volatile const int32_t* addr);  
  2. int32_t android_atomic_release_load(volatile const int32_t* addr); 

注意 上面这两个函数从功能上看是一样的,区别只是内存屏障位于读取前还是读取后,下面的两组函数也类似。

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

 
 
  1. int android_atomic_acquire_cas(int32_t oldvalue, int32_t newvalue, volatile int32_t* addr);  
  2. int android_atomic_release_cas(int32_t oldvalue, int32_t newvalue, volatile int32_t* addr); 

8.还有两个原子变量的宏定义
 

 
 
  1. #define android_atomic_write android_atomic_release_store  
  2. #define android_atomic_cmpxchg android_atomic_release_cas 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值