当前位置: 首页 > article >正文

C++ 线程初始化编译报错

这是一个很简单的开启一个线程, 用于演示一个线程和生命周期之间的错误,但是还没有把这个错误暴露出来, 就遇见了一个编译问题. 线程中执行指定逻辑的代码
线程的执行方法, 声明写在了ThreadRun.h 实现写在 ThreadRun.cpp中.

class ThreadRun {
public:
void func();
};
void ThreadRun::func() {
    cout << "Thread: " << this_thread::get_id() << " start" << endl;
    cout << "Thread: " << this_thread::get_id() << " end" << endl;
}

main方法调用: 此处出现编译异常,红字代表报错内容

int main() {
    ThreadRun myClass;
    //此处报错:
    //"error: no matching constructor for initialization of 'thread'"
    thread t1(myClass.func());   
    t1.join();
    return 0;   
}

函数构造方法传参错误, 在Main.cpp中, 将代码改为

int main() {
    ThreadRun myClass;
    // 代码改动处
    // thread t1(myClass.func()); 
    thread t1(&ThreadRun::func, &mgClass);   
    t1.join();
    return 0;   
}

总结:
Thread如果绑定的执行逻辑, 是一个类里面的成员函数, 那么thread在初始化的时候, 需要绑定该方法之外, 还需要将其所操作的或者涉及的对象作为参数传入!


http://www.kler.cn/a/384336.html

相关文章:

  • 沈阳乐晟睿浩科技有限公司抖音小店展望未来
  • leetcode字符串(二)-重复的子字符串
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十. 多线程控制帧率。循环播放,QT connect 细节,
  • CIDEr: Consensus-based Image Description Evaluation
  • RabbitMQ 七种工作模式介绍
  • Jest项目实战(6):搭建文档网站
  • docker镜像仓库常用命令
  • ios打包私钥证书和profile文件最正式最常用的生成流程
  • linux系统中涉及到用户管理的命令知识
  • AMD显卡低负载看视频掉驱动(chrome edge浏览器) 高负载玩游戏却稳定 解决方法——关闭MPO
  • 代码随想录算法训练营第三十九天|Day39 动态规划
  • 汽车广告常见特效处理有哪些?
  • 备战软考Day05-数据库系统基础知识
  • centos查看硬盘资源使用情况命令大全
  • 深入解析Linux内核中断管理:从IRQ描述符到irq domain的设计与实现
  • 宏集Cogent DataHub: 高效实现风电场数据集中管理与自动化
  • 股指期货交易中,如何应对震荡行情?
  • mmpose框架进行人体姿态识别模型HRNet训练
  • AJAX 全面教程:从基础到高级
  • [react]10、react性能优化
  • 前端三件套-css
  • 二分答案—愤怒的牛-P1676 [USACO05FEB] Aggressive cows G
  • 11/6密码学 Des对称加密设计
  • 软考系统架构设计师论文:云上自动化运维及其应用
  • mysql查表相关练习
  • 6.0、静态路由