首页 > 编程语言 >C++11线程传递参数汇总

C++11线程传递参数汇总

时间:2023-11-23 14:47:50浏览次数:51  
标签:11 int C++ 传递 参数 线程

一、概述

  总结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

相关文章

  • 学习笔记11
    苏格拉底挑战第十三章TCP/IP和网络编程一、知识点归纳(一)网络编程简介如今,上网已成为日常生活的需要。虽然大多数人可能只把互联网作为一种信息收集、网上购物和社交媒体等的工具,但计算机科学的学生必须对互联网技术有一定的了解,并掌握一定的网络编程的技能。在本章中,我们......
  • 第 11 节 Python程序调试和异常处理技巧
    常见的错误语法错误:例如,不正确的缩进、未定义的变量、括号不匹配等。运行时错误:例如,尝试访问不存在的文件、内存溢出等。类型错误:例如,将字符串与整数相加等。逻辑错误:例如,程序没有按照预期的流程执行、条件判断不正确等。输入错误:例如,无效的输入、输入的数据类型不正确等。常见的错......
  • 20211105李宜时TCP/IP网络编程学习笔记13
    20211105李宜时TCP/IP网络编程学习笔记1.网络编程简介网络编程是指编写能够在网络中传输数据的程序,比如互联网。在Linux系统中,网络编程通常涉及使用套接字API。2.TCP/IP协议TCP/IP是一组用于互联网数据交换的协议。它包括传输控制协议(TCP)和网络互联协议(IP)。3.IP主机......
  • c++小程序/随机产生100以内的一个自然数,给出7次机会猜测数的大小
    一、随机产生100以内的一个自然数,给出7次机会猜测数的大小要求:1、 如果猜对了,提示:“真聪明,您猜对了!”,并退出程序2、 如果猜得数比随机数大,给出提示“你猜的数太大了”3、 如果猜得数比随机数小,提示“您猜的数太小了”,如果超出七次没有猜对,提示“很遗憾,您没有猜对”,并退出程序......
  • c++小程序/类Date
    声明类Date要求:1、使用户可以设置日期,并在输入错误时提示。a一年12个月,若输入12以外的数,提示“输入月份错误”b每个月依次有{31,28/29,31,30,31,30,31,31,30,31,30,31}若输入的数值超过该月天数,提示“输入天数错误”。2、可以查询两个日期之间相差天数注意:闰年Code#include<iostr......
  • c++小程序/数组排序
    数组排序1、定义交换两个整型数的函数swap2、定义sort函数给数组排序,调用swap函数Code#include<iostream.h>template<classT>voidswap(T&x,T&y){Ttemp;temp=x;x=y;y=temp;}template<classp>voidsort(p*a,pb){for(inti=0;i<10;i++){......
  • c++小程序/输入三个数,判断能不能组成三角形
    输入三个数,判断能不能组成三角形要求:1、输入-1,0,-1,提示“你输入的为负数”2、输入1,2,3,提示“你输入的三个数不能组成三角形”3、输入3,4,5提示“输入的三个数能组成三角形,并且是一个直角三角形”4、输入3,3,4提示“输入的三个数能组成三角形,并且是一个等腰三角形”1、 输入3,3,3提示“输......
  • Redis单线程速度快原理
    Redis单线程速度快原理基于内存存储实现我们都知道内存读写是比在磁盘快很多的,Redis基于内存存储实现的数据库,相对于数据存在磁盘的MySQL数据库,省去磁盘I/O的消耗。高效的数据结构数据结构说明:Redis内部采用了一些精细化的数据结构和算法,例如哈希表、跳跃表、压缩列表等,这......
  • c++(4)
    C++(4)1.C++模板1.1模板的概论C++提供了函数模板(functiontemplate),函数模板是将函数的参数类型不具体化,在函数使用时,再给定具体的参数的数据类型。C++给定两个模板机制:函数模板和类模板【注】都属于参数类型的模板,又称之为参数模板1.2函数模板函数模板可以自动推......
  • iOS信号量造成线程优先级反转
    在并发队列使用信号量会可能会造成线程优先级反转一、在iOS16&XCode14上遇到-使用信号量造成线程优先级反转问题提醒经过查询资料,发现是在XCode14上增加了工具,比如:ThreadPerformanceChecker(XCode14上默认开启的),这个工具会让APP在运行的时候,发现有例如线程优先级反转......