天天看點

《深入了解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

繼續閱讀