C 11多執行緒(1)

2021-08-28 09:56:11 字數 1304 閱讀 3856

c++11中新增了duox多執行緒類,編寫c++程式可以直接使用c++11中的多執行緒庫,不必依賴於平台多執行緒,這樣可以方便寫出誇平台的多執行緒程式。多執行緒可以最大化利用計算機資源,提高**的執行效率。

c++11中thread類提供兩個成員函式,join()和detach()函式。這兩個函式用來啟動建立的執行緒。但是兩者zhij之間存在區別:join()啟動的執行緒會阻塞主線程,當子執行緒執行結束後才會執行主線程。相比之下detach()函式是啟動zixi子執行緒,並且讓子執行緒和主線程進行分離,子執行緒和主線程各執行各的,在**層次上,兩個執行緒並不存在誰阻塞誰,很可能主線程已經執行結束了子執行緒還在執行。

使用join()啟動執行緒

#include #include //1

using namespace std;

//2void sonthread()

{ cout << "子執行緒開始" << endl;

cout << "子執行緒退出"<

建立多執行緒過程:

1、包含標頭檔案#include

2、建立執行緒函式

3、建立執行緒物件

4、啟動執行緒

使用detach()建立執行緒

#include #include //1

using namespace std;

//2void sonthread()

{ cout << "子執行緒開始" << endl;

cout << "子執行緒退出"<

從上面的執行結果可以看出,join()啟動的執行緒將主線程阻塞;detach()啟動的執行緒不會阻塞主線程,主線程與子執行緒會無序執行,直至程式執行完畢。

啟動執行緒時,join()與detach()只能使用乙個函式,使用了其中乙個就不能使用另乙個,有乙個重要的函式可以進行判斷,joinable()函式,如果已經使用了join()或detach()那麼joinable()返回false,否則返回true。

#include #include //1

using namespace std;

//2void sonthread()

{ cout << "子執行緒開始" << endl;

cout << "子執行緒退出"<

C 11 多執行緒

新特性之描述 雖然 c 11 會在語言的定義上提供乙個記憶體模型以支援執行緒,但執行緒的使用主要將以 c 11 標準庫的方式呈現。c 11 標準庫會提供型別 thread std thread 若要執行乙個執行緒,可以建立乙個型別 thread 的實體,其初始引數為乙個函式物件,以及該函式物件所需要...

c 11 多執行緒

1.多執行緒的原理 同一時間內,cpu只能處理1條執行緒,只有1條執行緒在工作 執行 多執行緒併發 同時 執行,其實是cpu快速地在多條執行緒之間排程 切換 如果cpu排程執行緒的時間足夠快,就造成了多執行緒併發執行的假象。思考 如果執行緒非常非常多,會發生什麼情況?cpu會在n多執行緒之間排程,c...

C 11 多執行緒

2011 年 c 迎來重大的改革 語言層面上承認了 多執行緒 程式的存在 加入了 thread 多執行緒支援庫,內容豐富 功能強大。首先從我個人理解角度粗鄙的理解一下多執行緒。多執行緒眾所周知 切割時間片的多程式併發執行,大多數的計算機都支援多執行緒併發的硬體支援。這可能是最簡單的多執行緒程式了。多...