2017-04-22更新
gcc 4.7 開始支援c++11的記憶體一致性模型,提供了__atomic**系列函式,可以替代原有的__sync**系列。
在訪存行為上,更為清晰,推薦使用。
2011-09-06更新
需要使用atomic_add_return函式,發現編譯時找不到該函式的入口,閱讀iatomic.h後發現在i386和x86_64平台下,不支援帶有return字尾函式,例如atomic_sub_return,atomic_inc_return等,但支援test字尾函式,如atomic_sub_and_test等。
在其它平台,如powerpc、mips、arm下支援全系列的原子操作。真不知設計這個標頭檔案的人是怎麼想的。
2010-12-30更新
/usr/include/alsa/iatomic.h,也能實現原子操作,使用的時候#include就可以了,原有的atomic系列函式這裡都有,包括atomic_read、atomic_set、atomic_inc、atomic_add、atomic_sub,但是該函式在redhat(rhel)6.0以上版本也被取消了。
只支援32位資料的原子操作。
-------------------------------正文---------------------------------------
在linux2.6.18之後,刪除了和,gcc提供了內建的原子操作函式,更適合使用者態的程式使用。現在atomic.h在核心標頭檔案中,不在gcc預設搜尋路徑下,即使像下面這樣強行指定路徑,還是會出現編譯錯誤。
gcc從4.1.0提供了__sync_*系列的built-in函式,用於提供加減和邏輯運算的原子操作,我是傳送門。
可以對1,2,4或8位元組長度的數值型別或指標進行原子操作,其宣告如下
這兩組函式的區別在於第一組返回更新前的值,第二組返回更新後的值,下面的示例引自這裡。
對於使用atomic.h的老**,可以通過巨集定義的方式,移植到高核心版本的linux系統上,例如
沒有atomic h後如何在linux實現原子操作
2010 12 30更新 今天同事告訴我說有個 usr include alsa iatomic.h,也能實現原子操作,使用的時候 include就可以了,原有的atomic系列函式這裡都有,不過我還沒試過。正文 在linux2.6.18之後,刪除了和,gcc提供了內建的原子操 作函式,更適合使用者...
如何在沒有https環境下使用webrtc
新版本的webrtc使用需要https,但是在內網開發除錯時,要配置https環境比較麻煩,下面的方法是教你如何在http下使用webrtc 1,點桌面上的chrome圖票,右鍵 屬性,把目票輸入框中的內容換成以下內容 unsafely treat insecure origin as secure...
如何在輸入空行後停止輸入
最近碰到乙個遇到空行結束輸入,我就很蒙蔽,所以總結一下 public static void main string args system.out.println over input 以上 第一處判斷條件可以替換為in.hasnextline 但是不可以是in.hasnext 第二處判斷條件可以...