boost庫中的原子操作

2021-09-19 12:00:50 字數 1504 閱讀 7353

boost庫這中有有關多執行緒的內容,粗略看書,似乎比c++ 11 的多執行緒好一丟丟。做個讀書筆記,以後忘了可以參考。

原子操作  atomic

需要包含標頭檔案

#include
要用這個標頭檔案,boost庫是需要編譯的,最好是root許可權下編譯,要不會出錯。 

boost::atomica(10);//定義a為原子操作,

assert( a == 10);// 如果a等於是不報錯,不等於10 報錯

std::cout << "a = " << a << std::endl;

boost::atomic_int b(100);//設定b為原子操作

assert(b == 100);

std::cout<< "b = " << b << std::endl;

boost::atomic_int c(1);//設定c為原子操作

assert(c == 1);

std::cout << "c = " << c << std::endl;

//load()函式為取值函式,也就是輸出函式,輸出為原子操作

std::cout << "b.load() = " << b.load()<< std::endl;

//exchange()函式為交換函式,交換之後返回之前的值

//把111交換到a中,b=200,這個也是原子操作,=過載了store()函式

//store()函式為幅值函式,原子操作。

在ubuntu16系統下截圖。這個可以按f2右面那個按鍵,全部是全螢幕截圖,print screen 這個按鍵,區域性截圖需要設定一下的。進入設定->鍵盤->截圖->對選區截圖

就這樣就好了。

Nginx中的原子操作

原子操作在系統程式設計中屬於基礎工具。nginx與其他軟體很不一樣,它幾乎把所有作業系統的功能都封裝了一遍,估計是出於程式設計一致性和可移植性的考慮。對於原子操作,nginx提供一組介面。這裡我們只研究有gcc 4.1以上版本的情況,因為nginx對不同的情況有不同的實現,gcc應該還是比較普遍的吧...

標準C 庫的原子操作函式

標準 c 庫的原子操作函式 以下 來自 gun的 libstdc v3.0.97 原子操作所在的檔案 我們可以看到在配置資料夾 cpu下有各種平台的實現檔案 atomicity.h ifndef bits atomicity h define bits atomicity h1 typedef in...

詳解boost庫中的Message Queue

message queue 後文簡寫成mq或訊息佇列 是boost庫中用來封裝程序間通訊的一種實現,同一臺機器上的程序或執行緒可以通過訊息佇列來進行通迅。訊息佇列中的訊息由優先順序 訊息長度 訊息資料三部分組成。這裡需要注意的事,mq只是簡單的將要傳送的資料在記憶體中進行拷貝,所以我們在傳送複雜結構...