手机网站焦点图,在线外链推广,wordpress狮子歌歌,新乡门户网站建设方案说明#xff1a;
通过类里面的函数作为线程入口#xff0c;我个人难理解的地方在于给线程传递参数的时候#xff0c;怎么找到Main函数。后面会做分析。
首先创建类#xff1a;创建MyThread类#xff0c;其中公有函数Main作为入口。这个类的传教比较简单#xff0c;成员…说明
通过类里面的函数作为线程入口我个人难理解的地方在于给线程传递参数的时候怎么找到Main函数。后面会做分析。
首先创建类创建MyThread类其中公有函数Main作为入口。这个类的传教比较简单成员函数只有一个cout语句并不难。
class MyThread
{public:// 入口线程函数Mainvoid Main(){coutMyThread Main:name:ageendl;}string name;int age;
};其次创建主函数在主函数立实例化对象这个基础知识了。
MyThread myth;myth.name zhoujielun;myth.age 30;
接下来就是要创建线程并且传递参数了。创建线程的方法有两种
第一种使用调用库函数的方法建立线程
//在这里要传递一个成员函数成员函数传递时通过 类名::函数名 这种方式去传递的。在这里我们还要加上取地址符合这样传进去才是成员函数的指针。
//又因为成员函数this指针会指向该成员函数所在对象的起始地址所以要传递当前对象的地址。 myth
thread th(MyThread::Main,myth); th.join();
第二种使用标准命名空间的方法创建一个线程
std::thread th;
th std::thread(MyThread::Main,myth);
th.join();
传递参数的时候我个人有点难理解的我在这里分享一下自己的理解首先传递的参数是MyThread类里面的成员函数Main需要使用MyThread::Main这种类名函数名的方式传递进去。在这里我们还要加上取地址符合这样传进去才是成员函数的指针。又因为Main是成员函数this指针会指向该成员函数所在对象的起始地址所以要传递当前对象的地址。 myth 完整代码
#include iostream
#include thread
#include string
#include unistd.husing namespace std;//使用成员函数作为线程的入口class MyThread
{public:// 入口线程函数Mainvoid Main(){coutMyThread Main:name:ageendl;}string name;int age;
};int main(int num,char* s[])
{MyThread myth;myth.name zhoujielun;myth.age 30;//关于线程中参数传递的解释//在这里要传递一个成员函数成员函数传递时通过 类名::函数名 这种方式去传递的。在这里我们还要加上取地址符合这样传进去才是成员函数的指针。//又因为成员函数this指针会指向该成员函数所在对象的起始地址所以要传递当前对象的地址。 myth//方法一 使用调用库函数的方法建立线程thread th(MyThread::Main,myth); th.join();//方法二 使用标准命名空间的方法创建一个线程// std::thread th;// th std::thread(MyThread::Main,myth); // th.join();return 0;
}