C++執行緒的幾種呼叫方式
阿新 • • 發佈:2019-02-09
#include<thread> #include<future> using namespace std; class A { public: void f(int x,char c){} int operator()(int N) { return 0; } }; void foo(int x){} int main() { A a; thread t1(a, 6); //傳遞a的拷貝給子執行緒 thread t2(ref(a), 6); //傳遞a的引用給子執行緒 thread t3(move(a), 6);//a在主執行緒中將不再有效 thread t4(A(), 6); //傳遞臨時建立的a物件給子執行緒 thread t5(foo, 6); // 宣告的函式:foo thread t6([](int x) {return x*x; }, 6); // lambda函式 thread t7(&A::f, a, 8, 'w'); //傳遞a的拷貝的成員函式給子執行緒 8和'w'是f()的引數 thread t8(&A::f, &a, 8, 'w'); //傳遞a的地址的成員函式給子執行緒 //async同樣適用於以上八種方法 async(launch::async, a, 6); return 0; }