C++小程序:thread类对象(子线程)调用参数几种方法

#include<iostream>
#include<string>
#include<thread>
using namespace std;
class TA  
{public:
    void operator()()
    {cout<<"\n类方法(仿函数方法)子线程在运行"<<endl;}
};
void myPrint() 
{  for(int i=0;i<10;i++)
  {
    cout<<"\n函数法子线程在运行"<<endl;
   }
}
int main()

    cout<<endl;
//主线程(即本c++文件)
    cout<<"\n主线程单击后结束"<<endl; //这一语句代表主线程在运行
//函数名作为参数的子线程
    thread myThread01(myPrint); //声明thread对象myThread01,并将函数名myPrint作为参数传入;
                                //注意函数名没有括号,亦即thread对象的参数不能再有参数;
                                //这个函数内有循环运行时间长,各子线程是独立运行的,其它
                                //子线程运行结果可能会插入到这个子线程的运行结果中。
//兰布达表达式作为参数的子线程   
    auto myLambda = [] {cout << "\nlambda子线程在运行" << endl; };
    thread myThread02(myLambda);//声明thread对象myThread02,并将兰布达表达式作为参数传入
                                //lambuda表达式作为thread对象参数时也不能再带有参数
//类对象(仿函数)作为参数的子线程
    TA ta; 
    thread myThread03(ta); //声明thread对象myThread03,并将仿函数作为参数传入
    myThread01.join(); //子线程与主线程关联,保证在子线程执行完毕前主线程不结束
    myThread02.join();
    myThread03.join();
    cout<<endl;
    system("pause");
    return 0;
}

//运行结果如下:
//主线程单击后结束
//函数法子线程在运行
//类方法(仿函数方法)子线程在运行
//lambda子线程在运行
//函数法子线程在运行
//函数法子线程在运行
//函数法子线程在运行
//函数法子线程在运行
//函数法子线程在运行
//函数法子线程在运行
//函数法子线程在运行
//函数法子线程在运行
//函数法子线程在运行
//请按任意键继续. . .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值