c++11 原子類型與原子操作

1、原子類型和原子操作
(1)類型
c++11 原子類型與原子操作
(2)操作
c++11 原子類型與原子操作
(3)詳述
● 原子類型只能從其模板參數類型中進行構造,標準不允許原子類型進行拷貝構造、移動構造,以及使用operator=等
● atomic_flag 是一個原子的布爾類型,無鎖的,即線程對其訪問不需要加鎖;可支持test_and_set()是一種原子操作,用于在一個內存空間原子地寫入新值并且返回舊值,如果對象被設置了,則返回true;clear()清除對象值,將變量值設為false;
2、內存模型,順序一致性和memory_order
(1)類型
c++11 原子類型與原子操作
(2)詳述
● x86以及SPARC(TSO模式)都被看作是采用強順序內存模型的平臺;而Alpha、PowerPC、ArmV7等平臺,則采用弱順序內存模型
● 存在弱順序的內存模型原因:可使得處理器進一步發掘指令中的并行性,使得指令執行的性能更高
● 默認情況下,原子類型的變量在線程中總是保持著順序執行的特性。
● 原子存儲操作store可使用relaxed seq_cst release;原子寫操作load可使用relaxed seq_cst acquire consume;可讀可寫操作可使用所有
● 先于發生關系總是傳遞的
3、線程局部存儲
(1)擁有線程生命周期及線程可見性的變量
(2)如POSIX標準中的錯誤碼全局變量errno,在多線程中將遭遇問題;
(3)c++11中的解決方法是通過thread_local 修飾符聲明變量即可:如int thread_local errCode;則errCode在線程開始時被初始化,而在線程結束時該值不在有效
4、快速退出
(1)teminate函數;沒有被捕捉的異常就會導致其被調用,其默認是去調用abort函數。可通過set_terminate函數改變默認行為
(2)abort不會調用任何析構函數<terminate默認下也一樣>,拋出信號:SIGABRT
(3)exit:屬于正常退出范疇的程序終止,會正常調用自動變量的析構函數,且會調用atexit注冊的函數,調用次序與其注冊順序相反
(4)在C++11中,引入quick_exit,該函數并不執行析構函數而只是使程序終止。與abort不同,abort是異常退出,quick_exit和exit同屬于正常退出。也可使用at_quick_exit注冊函數

轉載于:https://blog.51cto.com/yebaoshan/2108101

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254744.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254744.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254744.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

get_metrology_object_measures獲取測量區域和計量模型的計量對象的邊緣位置結果

目錄get_metrology_object_measures&#xff08;算子&#xff09;描述參數get_metrology_object_measures&#xff08;算子&#xff09; get_metrology_object_measures - 獲取測量區域和計量模型的計量對象的邊緣位置結果。 get_metrology_object_measures&#xff08;&…

依弗科(上海)機電設備有限公司

機器人噴涂倒計時&#xff0c;上帝幫我實現愿望吧 阿門 &#xfeff;&#xfeff;&#xfeff;&#xfeff;

外部變量和外部函數

C程序由一組對象組成&#xff0c;這些對象包括程序中所使用的變量和實現特定功能的函數。變量可以分為函數內部定義、使用的變量和函數外部定義的變量&#xff0c;通常情況下&#xff0c;把函數內部定義、使用的變量稱為內部變量或局部變量&#xff0c;而將在函數外部定義的、供…

gulp中使用babel-polyfill編譯es6拓展語法

今天想在新項目中使用es6的generators&#xff0c;發現雖然gulp已經有了babel編譯&#xff0c;但仍會報錯&#xff0c;網上查找后發現解決辦法是加載polyfill&#xff0c;但是找到的辦法都不試用我的項目。 解決辦法&#xff1a;在index.html中加載node_modules的babel-polyfil…

CoDeSys

&#xfeff;&#xfeff;CoDeSys是全球最著名的PLC內核軟件研發廠家德國的3S&#xff08;SMART&#xff0c;SOFTWARE&#xff0c;SOLUTIONS&#xff09;公司出的一款與制造商無關的IEC 61131-1編程軟件。CoDeSys 支持完整版本的IEC61131標準的編程環境&#xff0c;支持標準的六…

使用halcon結合機械XY軸對相機進行9點標定

小哥哥小姐姐覺得有用點個贊唄&#xff01; 先在halcon中計算仿射變換矩陣并驗證 //在圖像中找到的模板中心位置 PicX:[1680.721,2065.147,911.499,526.798,1290.920,1285.731,1300.953] PicY:[968.321,964.366,976.283,980.035, 587.055,394.727,1355.487] //與圖像中查找…

Ubuntu Linux 提出新的發布模式——測試周

2019獨角獸企業重金招聘Python工程師標準>>> 導讀開源技術項目最大的優勢之一就是社區的每個人都可以自由地提出想法&#xff0c;如果獲得社區支持&#xff0c;它可以變成現實。著名的 Ubuntu 開發人員 Simon Quigley 就提出了一個可能改變 Ubuntu Linux 開發過程的…

264 I和IDR

I和IDR幀都是使用幀內預測的。它們都是同一個東西而已,在編碼和解碼中為了方便&#xff0c;要首個I幀和其他I幀區別開&#xff0c;所以才把第一個首個I幀叫IDR&#xff0c;這樣就方便控制編碼和解碼流程。IDR幀的作用是立刻刷新,使錯誤不致傳播,從IDR幀開始,重新算一個新的序列…

gen_caltab生成標定文件

目錄gen_caltab&#xff08;算子&#xff09;描述參數gen_caltab&#xff08;算子&#xff09; gen_caltab - 為具有矩形排列標記的校準板生成校準板描述文件和相應的PostScript文件。 gen_caltab&#xff08;:: XNum&#xff0c;YNum&#xff0c;MarkDist&#xff0c;Diamet…

主席樹,喵~

稍微總結一下主席樹吧 Too Difficult&#xff01;搞了一天搞出一大堆怎么令人悲傷的辣雞代碼。總之先總結一下吧&#xff0c;以后碰到這種問題直接拿去毒害隊友好了。 UPD 5/24 茍狗是沙比 一個節點記錄三個信息&#xff1a;lson,rson,sum 用pid表示節點個數。 build void buil…

【轉】小白級的CocoaPods安裝和使用教程

原文網址&#xff1a;http://www.jianshu.com/p/e2f65848dddc 百度有很多CocoaPods的安裝教程.第一次看的時候,確實有點摸不透的感覺.經過思考,一步一步來實踐,前后花了三十幾分鐘,才順利使用..所以想了想,我還是寫一個小白級的教程吧.細到每一個細節都說明. 讓你不用10分鐘解決…

常見錯誤總結

少打頭文件 少打using namespace std; 命名沖突&#xff0c;全局變量與局部變量命名一致&#xff0c;導致使用的值不是期望值 邊讀邊寫&#xff0c;導致改后讀&#xff0c;覆蓋寫入的值 長整數移位溢出&#xff0c;1<<63是錯誤的&#xff0c;應該寫成1ll<<63 循環變…

x264_sps_init

x264_sps_init此函數為序列量化集的初始化。主要對結構體x264_sps_t中參數的初始化。 void x264_sps_init( x264_sps_t *sps, int i_id, x264_param_t *param ) { sps->i_id i_id;首先設置序列參數集的ID b_qpprime_y_zero_transform_bypass判斷碼率控制方法是否是恒定質量…

HALCON相機標定相機內參相機外參

目錄相機標定1.相機標定是什么2.怎么使用halcon進行相機內外參標定&#xff1f;&#xff08;1&#xff09;搭建硬件1.**相機連好電腦&#xff0c;用相機廠家軟件打開相機&#xff0c;檢查一下相機是否正常。**2.**接下來使用halcon連接相機**&#xff08;2&#xff09;開始標定…

ionic更改端口號

ionic serve -p 8888 —— 重新指定端口號為8888 serve [options] ............................... 啟動本地服務器進行開發測試 dev/testing   [--consolelogs|-c] ..................... 輸入app的控制臺到ionic的控制臺顯示   [--serverlogs|-s] .....................…

angular change the url , prevent reloading

http://stackoverflow.com/questions/14974271/can-you-change-a-path-without-reloading-the-controller-in-angularjs $location.search({vln: $scope.vln_id}, false);會改變url中 &#xff1f; 后面的 搜索參數&#xff0c;但是controller不會重新實例化。angular 官方文檔…

Ubuntu apt-get 更新/查看軟件

ubuntu 升級軟件&#xff1a; sudo apt-get update 更新源  sudo apt-get upgrade 更新已安裝的包  sudo apt-get dist-upgrade 升級系統 ubuntu升級特定軟件&#xff1a; 可以用 sudo apt-get install pkgname 看軟件安裝位置:dpkg -L xxxx 查看軟件是否安裝&#xff1…

X264設定

--aq-mode <integer> AQ method [1]- 0: Disabled- 1: Variance AQ (complexity mask)說明&#xff1a;自適應量化方法&#xff0c;可以改善某些場景過于模糊等問題&#xff0c;默認開啟- 0: 關閉- 1: 可變AQ推薦值&#xff1a;默認范例&#xff1a;--aq-mode 1--aq-stre…