c 11併發程式設計歷程(5)轉移執行緒所有權

2021-10-04 23:10:22 字數 1135 閱讀 2790

#include

#include

class

scoped_thread

intstart

(std::thread _t)

~scoped_thread()

scoped_thread

(scoped_thread const&)

=delete

; scoped_thread &

operator

=(scoped_thread const&)

=delete

;private

: std::thread m_thread;};

struct func

intoperator()

()return0;

}};int

main()

執行結果(擷取部分):

std::thread(func1) 開始建立乙個新執行緒,新執行緒執行乙個可呼叫的函式物件func1;

然後start中將執行緒所有權轉移給類成員變數m_thread,繼續執行執行緒,在析構函式中等待執行緒執行完成。

單個的執行緒所有權轉移我們看到了,下面再使用vectot來簡單拓展一下執行緒的批量操作

#include

#include

#include

#include

#include

void

print

(int i)

intmain()

執行結果如下:

執行緒的批量建立與等待。這個例子雖然看著簡單,但是是本專欄部落格多執行緒開始邁向自動化管理的第一步。

此處注意for_each裡的mem_fn的用法,

人,總是要有一點精神的,不是嗎

c 11多執行緒併發程式設計學習 5 建立多執行緒

一.建立多個執行緒 1 include2 include3 include4 include5 using namespace std 6 7 void fun int i 執行緒執行函式 8 20 21 等待所有子執行緒結束,使用迭代器很方便 22 for auto iter threads.be...

C 11併發程式設計 多執行緒std thread

c 11引入了thread類,大大降低了多執行緒使用的複雜度,原先使用多執行緒只能用系統的api,無法解決跨平台問題,一套 平台移植,對應多執行緒 也必須要修改。現在在c 11中只需使用語言層面的thread可以解決這個問題。所需標頭檔案 thread noexcept 乙個空的std thread...

C 11 多執行緒 併發程式設計總結

建立std thread,一般會繫結乙個底層的執行緒。若該thread還繫結好函式物件,則即刻將該函式執行於thread的底層執行緒。執行緒相關的很多預設是move語義,因為在常識中線程複製是很奇怪的行為。joinable 是否可以阻塞至該thread繫結的底層執行緒執行完畢 倘若該thread沒有...