一、概述
总结C++11线程传递参数:
1.传递基本数据类型(int、double)
2.传递字符串
3.传递结构体
4.传递类对象
二、代码示例
//导入线程头文件 #include <thread> //导入std命名空间 using namespace std; //传递int类型的参数 void threadFun(int n) { qDebug() << n; qDebug() << QString::fromLocal8Bit("C++函数执行"); } //传递double类型的参数 void runDoubleFun(double arg) { qDebug() << arg; } //传递字符串类型的参数 void runCharFun(char* name) { qDebug() << QString::fromLocal8Bit(name); } //传递结构体类型的参数 typedef struct Person { char* name; int age; }; void runStructFun(Person p) { qDebug() << QString::fromLocal8Bit(p.name); qDebug() << p.age; } //传递class类型的参数 class Student { public: char* name; int age; }; void runClassRun(Student s) { qDebug() << QString::fromLocal8Bit(s.name); qDebug() << s.age; } Thread11Demo::Thread11Demo() { } void Thread11Demo::createThreadInt() { //创建线程对象 thread mThread; //创建线程,第一个参数是线程执行函数,第二个参数是线程执行函数参数 mThread = thread(threadFun, 1); //等待线程结束 mThread.join(); } void Thread11Demo::createThreadDouble() { //创建C++11线程对象 thread mThread; //执行线程函数,并传递参数 //第一个参数是线程的执行函数,第二个参数是线程执行函数的参数 mThread = thread(runDoubleFun, 9.99); //等待线程结束 mThread.join(); } void Thread11Demo::createThreadChar() { //创建C++11线程对象 thread mThread; char* name = "德玛西亚万岁"; //执行线程函数,并传递参数 //第一个参数是线程的执行函数,第二个参数是线程执行函数的参数 mThread = thread(runCharFun, name); //等待线程结束 mThread.join(); } void Thread11Demo::createThreadStruct() { Person p; p.name = "诺克萨斯"; p.age = 18; //创建C++11线程对象 thread mThread; //执行线程函数,并传递参数 //第一个参数是线程的执行函数,第二个参数是线程执行函数的参数 mThread = thread(runStructFun, p); //等待线程结束 mThread.join(); } void Thread11Demo::createThreadClass() { Student student; student.name = "小学生"; student.age = 12; //创建C++11线程对象 thread mThread; //执行线程函数,并传递参数 //第一个参数是线程的执行函数,第二个参数是线程执行函数的参数 mThread = thread(runClassRun, student); //等待线程结束 mThread.join(); }
标签:11,int,C++,传递,参数,线程 From: https://www.cnblogs.com/tony-yang-flutter/p/17851499.html