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

C++类中多线程的编码方式

问题

在C++代码中,一般的代码是需要封装在类里面,比如对象,方法等。否则就不能很好的利用C++面向对象的能力了。

但是这个方式在处理线程时会碰到一个问题。

考虑下面一个简单的场景:

class demoC
{
public:
    std::thread t;
    int x;

    void threadFunc()
    {
        std::cout<<x<<std::endl;
    }

    demoC()
    {
        t = std::thread(threadFunc);
    }
};

int main() {
    demoC demo;
}

一个类中有一个线程对象,并编写一个对应线程函数,在初始化时启动这个线程。

而且这个线程中是需要访问到类中的其他成员变量的。

这是面向对象语言的一个搭建类的基本方法。

但是上面的代码是无法编译通过的:
在这里插入图片描述

也就是说作为线程函数是需要为一个static方法的。

但是如果把类中的这个方法threadFunc方法定义成static方法的话,就无法直接访问到类的成员变量


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

相关文章:

  • 龙蜥 Linux 安装 JDK
  • S4 UPA of AA :新资产会计概览
  • 【代码随想录|贪心算法02】
  • 在 Flutter app 中,通过视频 URL 下载视频到手机相册
  • JS听到了双生花的回响
  • TiDB 调度概述
  • Java代码操作Zookeeper(使用 Apache Curator 库)
  • HarmonyOS4+NEXT星河版入门与项目实战(24)------Stage模型
  • Flink CDC 使用实践以及遇到的问题
  • 基于VUE3集成天地图
  • 【Golang TCP应用】
  • 指针与引用错题汇总
  • upload-labs 靶场(11~21)
  • 网络安全之访问控制
  • 你的网站真的安全吗?如何防止网站被攻击?
  • 【AI】JetsonNano启动时报错:soctherm OC ALARM
  • 【ETCD】etcd中配置参数详解
  • 高级java每日一道面试题-2024年11月29日-JVM篇-常见调优工具有哪些?
  • org.apache.commons.lang3包下的StringUtils工具类的使用
  • Maven 内置绑定到底怎么回事?
  • QT 实现QStackedWidget切换页面开门动画
  • Linux如何安装git
  • pytorch 融合 fuse 学习笔记
  • Linux:进程间通信之进程池和日志
  • Ubuntu 环境下的 C/C++ 编译与调试配置
  • “移门缓冲支架:为家庭安全加码”