1. 程式人生 > >c++11多執行緒 thread

c++11多執行緒 thread

 1.thread建構函式

default (1)	   thread() noexcept;
initialization (2)	 template <class Fn, class... Args>
                        explicit thread (Fn&& fn, Args&&... args);
copy [deleted] (3)	  thread (const thread&) = delete;
move (4)	 thread (thread&& x) noexcept;

可連線的執行緒物件在被銷燬之前應該被連線或分離。

引數:fn -- 指向函式的指標,指向成員的指標,或任何型別的可移動構造的函式物件(即,其類定義operator()的物件,包括閉包和函式物件)。

args -- 傳遞給fn呼叫的引數(如果有的話)。它們的型別應是可移動構造的。 如果fn是成員指標,則第一個引數應該是為其定義該成員的物件(或者是引用或指向它的指標)。

2.std::thread::detach()

從呼叫執行緒中分離由物件表示的執行緒,允許它們彼此獨立地執行。
兩個執行緒都以任何方式繼續不阻塞或同步。請注意,當任何一個結束執行時,其資源將被釋放。
在呼叫此函式後,

物件變為不可連線,可以安全銷燬

這種情況下,主執行緒和從執行緒分離,他們獨立執行,當主執行緒或從執行緒執行完成後,從執行緒的資源將被釋放,這種情況下,主執行緒可能比從執行緒先執行完然後釋放了從執行緒的資源,從執行緒沒有被執行。

3.std::thread::join()

執行緒執行完成後,該函式返回。這會使此函式返回的時刻與執行緒中所有操作的完成同步:這會阻止呼叫此函式的執行緒的執行,直到構造中呼叫的函式返回(如果尚未返回)。