1. 程式人生 > >C++執行緒的幾種呼叫方式

C++執行緒的幾種呼叫方式

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