C 11 併發與多執行緒學習記錄(二)

2021-09-27 21:27:17 字數 999 閱讀 5616

主線程從main函式開始,自己建立的執行緒則需要提供乙個可呼叫物件。函式執行完畢,執行緒就退出。

主線程退出後,整個程序也將執行完畢。

一般情況下,如果其它子執行緒也還沒執行完畢,隨著主線程退出,子執行緒也將被作業系統全部中止。

#include

#include

"stdafx.h"

#include

#include

void

func()

intmain()

else

return0;

}

注意:下面示例輸出說明構造執行緒物件的可呼叫物件被拷貝到執行緒的堆疊空間。所以可呼叫物件拷貝建構函式將被呼叫。這就是detach情況下,主線程在子執行緒之前退出,不會因為區域性物件被析構而導致異常的原因。。

示例:

class

testobj

testobj

(const testobj& obj)

~testobj()

void

func()

void

operator()

()};

intmain()

輸出:建構函式被呼叫

拷貝建構函式被呼叫

執行緒開始了:testobj

執行緒結束了:testobj

析構函式被呼叫

主線程退出

析構函式被呼叫

std::thread t([

]);

傳參示例2:

auto mylambda =

; std::thread t

(mylambda)

;

C 11 併發與多執行緒學習記錄(七)

std conditon variable需要和互斥量配合工作,使用的時候需要生成該類的物件。wait函式 wait 函式傳入乙個互斥量和返回bool的可呼叫物件。如果返回true,那麼wait直接返回,否則wait解鎖互斥量並阻塞到本行,直到某個執行緒呼叫notify one為止。如果wait沒有...

C 11 併發 多執行緒

通常情況下,原子操作是通過互斥 mutual exclusive 的訪問來保證的。linux下借助posix標準的pthread庫的互斥鎖 include include using namespace std static long long total 0 pthread mutex t m p...

C 11併發與多執行緒總結

一 執行緒概念 建立及傳參 二 獨佔互斥鎖 mutex,lock guardy與其他mutex 三 unique lock替換lock guardy 四 單例模式 singleton 下的執行緒安全問題 五 window臨界區 六 condition variable條件變數 七 std async...