C++线程的几种调用方式

论坛 期权论坛 脚本     
匿名技术用户   2020-12-21 11:21   102   0
#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;
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP