[cpp].c++11學習筆記-std thread
阿新 • • 發佈:2019-01-29
std::thread用於啟動執行緒,可以用作跨平臺的執行緒庫。
它啟動執行緒的方式很靈活,可以支援C函式,類成員函式,類靜態函式等。
#include <thread> //標頭檔案
#include <iostream>
using namespace std;
void fn1(void)
{
cout << "fn1" << endl;
}
void fn2(int a)
{
cout << "fn2 " << a << endl;
}
void fn3(int &a)
{
cout << "fn3 " << a << endl;
}
class cls
{
public:
void fn1(int a)
{
cout << "cls::fn1" << endl;
}
};
int main()
{
std::thread t1(&fn1); //執行緒物件構造後,即開始執行
//可被 joinable 的 thread 物件必須在他們銷燬之前被主執行緒 join 或者將其設定為 detached
t1.join(); //必須執行join,不然執行期錯誤
std::thread t2(&fn2, 2); //傳入函式引數
t2.join();
int n = 2;
std::thread t3(&fn3, std::ref(n)); //傳入引用引數
t3.join();
cls c;
//執行緒入口為類成員函式
std::thread t4(&cls::fn1, &c, 2);
t4.join();
return 0;
}