C++ thread庫

參考cplusplus
參考cppreference

0.線程的基礎知識

0.1 線程的狀態(tài)

0.2 c++線程的joinable和detached狀態(tài)

  • joinable
    一個可結合的線程能夠被其他線程收回其資源和殺死;在被其他線程回收之前竣灌,它的存儲器資源(如棧)是不釋放的妥泉。
  • detached
    一個分離的線程是不能被其他線程回收或殺死的鳖昌,它的存儲器資源在它終止時由系統(tǒng)自動釋放。

0.3 兩種等待線程結束的方式

  • 當線程啟動后抡谐,一定要在和線程相關聯(lián)的thread銷毀前,確定以何種方式等待線程執(zhí)行結束。
    1)detach方式也祠,啟動的線程自主在后臺運行,當前的代碼繼續(xù)往下執(zhí)行近速,不等待新線程結束诈嘿。
    2)join方式堪旧,等待啟動的線程完成,才會繼續(xù)往下執(zhí)行奖亚。

1.構造函數(shù)

  • 注意第二個構造函數(shù):
    新產(chǎn)生的線程會調用fn函數(shù)淳梦,該函數(shù)的參數(shù)由args給出。
template <class Fn, class... Args>
explicit thread (Fn&& fn, Args&&... args);

2.賦值操作

// move (1) 
thread& operator= (thread&& rhs) noexcept;
// copy [deleted] (2)   
thread& operator= (const thread&) = delete;
  • 當前對象不能是joinable的
// example for thread::operator=
#include <iostream>       // std::cout
#include <thread>         // std::thread, std::this_thread::sleep_for
#include <chrono>         // std::chrono::seconds
 
void pause_thread(int n) 
{
  std::this_thread::sleep_for (std::chrono::seconds(n));
  std::cout << "pause of " << n << " seconds ended\n";
}

int main() 
{
  std::thread threads[5];   // 該thread對象不是joinable

  std::cout << "Spawning 5 threads...\n";
  for (int i=0; i<5; ++i)
    threads[i] = std::thread(pause_thread,i+1);   // move-assign threads

  std::cout << "Done spawning threads. Now waiting for them to join:\n";
  for (int i=0; i<5; ++i)
    threads[i].join();

  std::cout << "All threads joined!\n";

  return 0;
}

3.判斷對象是否是joinable

  • 如下三種情況的thread對象不是joinable
    1)默認構造的
    2)對象進行了移動(構建其他對象昔字,或者賦值)
    3)已經(jīng)調用了join和detach
bool joinable() const noexcept;
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末爆袍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子作郭,更是在濱河造成了極大的恐慌陨囊,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夹攒,死亡現(xiàn)場離奇詭異蜘醋,居然都是意外死亡,警方通過查閱死者的電腦和手機咏尝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門压语,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人编检,你說我怎么就攤上這事无蜂。” “怎么了蒙谓?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵斥季,是天一觀的道長。 經(jīng)常有香客問我累驮,道長酣倾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任谤专,我火速辦了婚禮躁锡,結果婚禮上,老公的妹妹穿的比我還像新娘置侍。我一直安慰自己映之,他們只是感情好,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布蜡坊。 她就那樣靜靜地躺著杠输,像睡著了一般。 火紅的嫁衣襯著肌膚如雪秕衙。 梳的紋絲不亂的頭發(fā)上蠢甲,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音据忘,去河邊找鬼鹦牛。 笑死搞糕,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的曼追。 我是一名探鬼主播窍仰,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼礼殊!你這毒婦竟也來了辈赋?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤膏燕,失蹤者是張志新(化名)和其女友劉穎钥屈,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坝辫,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡篷就,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了近忙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竭业。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖及舍,靈堂內(nèi)的尸體忽然破棺而出未辆,到底是詐尸還是另有隱情,我是刑警寧澤锯玛,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布咐柜,位于F島的核電站,受9級特大地震影響攘残,放射性物質發(fā)生泄漏拙友。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一歼郭、第九天 我趴在偏房一處隱蔽的房頂上張望遗契。 院中可真熱鬧,春花似錦病曾、人聲如沸牍蜂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鲫竞。三九已至,卻和暖如春负敏,著一層夾襖步出監(jiān)牢的瞬間贡茅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工其做, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留顶考,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓妖泄,卻偏偏與公主長得像驹沿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蹈胡,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 接著上節(jié) atomic渊季,本節(jié)主要介紹condition_varible的內(nèi)容,練習代碼地址罚渐。本文參考http://...
    jorion閱讀 8,492評論 0 7
  • 接著上節(jié) condition_varible 却汉,本節(jié)主要介紹future的內(nèi)容,練習代碼地址荷并。本文參考http:/...
    jorion閱讀 14,794評論 1 5
  • 本文主要是針對C++中多線程并發(fā)操作參見(cplusplus)進行解釋合砂,文章從下面幾個方面進行學習,分別介紹多線程...
    jorion閱讀 9,817評論 0 10
  • 題記:只有當我們認為外界不存在強大的壓力時源织,我們才會為自己的行為發(fā)自內(nèi)心地負起責任翩伪。 日常生活中,很多家長都會用物...
    趙月晴閱讀 171評論 0 0
  • 不得不說谈息,2017年缘屹,就這么過去了。 這一年侠仇,“唱民謠太窮”的趙雷終于火了轻姿,但早就火了的樸樹,卻依然很窮逻炊。 一曲《...
    簡易城閱讀 152評論 0 0