1樓:匿名使用者
使用boost thread的庫函式構建多執行緒的c++程式,了解了基本的thread建立,執行緒同步以及執行緒本地儲存的使用。都在乙個**例項中進行了 驗證。其中還有乙個條件變數的使用在不好在乙個**中實現,以後有時間在編寫驗證一下。
> file name: thread_demo.cpp
> author: liu xin
> mail: [email protected]
> created time: 2023年10月14日 星期日 10時54分46秒
#include
#include
#include
#include
#include
#include
using namespace std;
const int max_thread_num=5;
int gcount=0;
boost::mutex mutex;
boost::mutex io_mutex;
boost::thread_specific_ptrptr; // 執行緒本地儲存訪問
void hello(int ithreadid)
ptr.reset(new string("hello"));
for(int i=0; i<10; i++)
sleep(1);}}
int main()
;for (int i=0; ijoin();
std::cout << "thread all finished." << std::endl;
return 0;}說明
1、**實現了乙個執行緒函式,main函式中建立多個執行緒物件呼叫該執行緒函式,並等待每個執行緒結束
2、執行緒函式中先輸出兩行文字,因為io輸出是爭用資源,需要加鎖,否則會出現列印混亂
3、在for迴圈中,對共享資源gcount進行++操作,同時輸出到標準輸出中,也許要進行互斥體加鎖
4、加鎖mutex根據raii實現,也就是scope_lock,退出{}則自動解鎖,因此,此處sleep放在{}外面 是為了驗證多執行緒執行++gcount操作是真正的多執行緒。如果放在{}裡面的話,由於lock還未釋放,其他執行緒會一直等到本執行緒的for迴圈執行完成才獲得鎖,實際上變成了偽多執行緒了,無意義
5、boost::thread_specific_ptr是執行緒本地儲存的訪問 指標,用於驗證執行緒本地儲存的效果
boost thread 怎樣 返回值
2樓:mexico卡卡
1. 利用全域性函式作為執行緒函式
void startthread1()
如何才能使用boost中的正則庫和執行緒庫
3樓:約定
我的boost裡的正則庫是在linux下編譯的
編譯完後無非是自己手工新增連線庫路徑而已....
在vc6下曾經編譯過,新增了n多的路徑才能使用
如何在Linux中使用awk命令
柴半段幹珠星 awk 用於一行中分成數個 欄位 來處理。適合處理小型資料。執行模式 awk 條件型別1 條件型別2 filename last awk 檢視登入者的資料,只顯示登入名和ip地址,並以 tab 隔開awk的內建變數 變數名稱 代表的含義 nf每一行 0 擁有的欄位總數 nr當前 awk...
如何在linux下shell指令碼輸出帶顏色文字
誤資訊 0x?指令引用的0x00000000記憶體,該記憶體不能為read或written 然後應用程式被關閉。如果去請教一些 高手 得到的回答往往是 windows就是這樣不穩定 之類的義憤和不屑。其實,這個錯誤並不一定是windows不穩定造成的。本文就來簡單分析這種錯誤的常見原因。一 應用程式...
如何在棉布上上色,如何在棉布上上色
買丙烯顏料來塗,稍微大一點的文具店都有的。如果要自己動手就這樣子。如果只是上色。你買一塊黑色和濹藍色的布就好了嘛。不知道你的棉布是什麼規格的 9010的棉布可以使用熱轉印,低於這個規格的棉布,只能用活性的上色 或是用塗料印花 t恤手繪我倒來是玩過幾年 源用的是紡織品顏料 需求量大而需要顏色比較單一的...