1. 程式人生 > >[cpp].c++11學習筆記-std thread

[cpp].c++11學習筆記-std thread

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; }