天天看点

《深入理解Android》一3.5 原子操作

本节书摘来自华章出版社《深入理解android》一书中的第3章,第3.5节,作者孟德国 王耀龙 周金利 黎欢,更多章节内容可以访问云栖社区“华章计算机”公众号查看

原子操作因整个操作连续执行完毕不被打断而得名,它需要cpu提供指令级的支持。在多线程运行环境下有着非凡的意义,有了原子操作我们不必借助锁来实现原子上下文,大大减小小系统开销,进而可以实现免锁引用计数、用户态spinloc,以及高性能免锁算法等,比如著名的无锁队列ms-queue就是基于原子的比较交换指令来实现的。

wtf中提供的原子操作主要是原子的自增和自减操作,主要用于实现计数增减,在android平台下的实现如下:

[→atomics.h]

注意到其输入参数都是int volatile ,在c/c++的变量定义语境下,volatile与的位置关系和const与位置关系完全一样,这里volatile修饰int而不修饰,所以其参数为指向volatile int类型整数的指针。volatile保证了对变量的操作一定是直接对内存中的变量本身的操作。其中,android_atomic_inc是android平台提供的函数,对于不同的硬件平台有不同的实现,但最终都是通过gcc内联汇编来实现的。

上一篇: samba
下一篇: SAMBA

继续阅读