boost多執行緒程式設計 一

2021-08-20 14:55:20 字數 962 閱讀 9000

一.thread執行緒的建立

1.執行緒就是在程序空間中執行的乙個函式

2.執行緒建立時需要傳遞給thread物件乙個函式物件或函式

3.傳遞的函式有引數時,可以直接傳遞給thread物件,並在呼叫時候發生拷貝。

二.下面我們來看個簡單的例子

#include #include #include void hello(char* data)

int main(int argc, char* argv)

boost::thread thrd(&hello,data),也可以傳入函式物件,boost::thread thrd(hello,data),當然也可以使用boost::bind的形式來傳入函式的引數。為了防止程式的終止,需要對新建的執行緒呼叫join()方法。join()方法是乙個阻塞呼叫,暫停當前的執行緒,一直等到呼叫join()函式的執行緒執行結束。上例子中的main()函式會一直等待到thread()執行結束。

三.執行緒的中斷

下面來看乙個簡單的例子:

#include #include void wait(int seconds) 

void thread()

} catch (boost::thread_interrupted&)

{ std::cout << "--this is interrupt--!" 上面例子的執行結果:

只列印0 和1,列印2時,執行緒呼叫interrupt(),中斷該執行緒,執行緒執行終止。catch()中可以捕捉到中斷丟擲的異常,上例子中的catch()不做任何操作,由於thread函式在捕捉到異常後,處理完後程式返回,執行緒也被終止了。這樣main()函式中的t.join()會**該執行緒,終止整個程式。

boost 多執行緒程式設計 二

一.互斥量的介紹 1.互斥量主要是用於執行緒間的同步,在多執行緒中主要是防止多個執行緒同時操作共享資源。2.互斥的基本原則是,一旦某乙個執行緒擁有互斥變數的所有權,操作共享的資源時,那麼其他的執行緒就處於等待中,等待這個互斥量的所有權,一旦擁有所有權的執行緒釋放互斥變數時,其他的執行緒才能取得互斥變...

boost併發程式設計 多執行緒

原子操作,基本都包含我們三個方面所關心的語義 操作本身是不可分割的 atomicity 乙個執行緒對某個資料的操作何時對另外乙個執行緒可見 visibility 執行的順序是否可以被重排 ordering include include include using namespace std usi...

boost多執行緒

linux下編譯多執行緒程式 g o 1.out 1.cpp i boost include l boost lib lboost thread 建立執行緒 標頭檔案 namespace boost thread 構造乙個表示當前執行執行緒的執行緒物件 explicit thread const b...