美文网首页
C++在类里面写线程

C++在类里面写线程

作者: 寽虎非虫003 | 来源:发表于2021-01-27 14:18 被阅读0次

一、主要参考

C++ 类中使用多线程;
C++11多线程并发基础入门教程;

二、一个最小程序

#include<iostream>
#include<thread>
#include<mutex>
using namespace std;
mutex m;//实例化m对象,不要理解为定义变量
class CT
{
    private:
    int a;
public:
    CT(){}
    ~CT(){}

    static void proc1(CT *p)
    {
        m.lock();//手动锁定
        lock_guard<mutex> g1(m,adopt_lock);
        cout << "proc1函数正在改写a" << endl;
        cout << "原始a为" << p->a << endl;
        cout << "现在a为" << p->a + 2 << endl;
    }//自动解锁

    static void proc2(CT *p)
    {
        lock_guard<mutex> g2(m);//自动锁定
        cout << "proc2函数正在改写a" << endl;
        cout << "原始a为" << p->a << endl;
        cout << "现在a为" << p->a + 1 << endl;
    }//自动解锁

    static void proc3(CT *p)
    {
        lock_guard<mutex> g3(m);//自动锁定
        cout<<"proc 3"<<endl;
    }

    void run()
    {
        a = 0;
        thread pro1;
        pro1 = thread(proc1, this);
        thread pro2(proc2, this);

        thread pro3;
        pro3 = thread(proc3,this);
        pro1.join();
        pro2.join();
        pro3.join();

        return;
    }

};

int main()
{
    CT A;
    A.run();
    
    return 0;
}

对应的cmake文件

cmake_minimum_required(VERSION 3.1)

#-pthread 是为了能正常链接多线程
set(CMAKE_CXX_FLAGS "${CAMKE_CXX_FLAGS} -std=c++11 -pthread")

project(th)

add_executable(th4 th4.cpp)

三、简单总结

1、线程函数声明为静态成员函数;
2、对静态的线程函数加一个this指针指向当前成员。

相关文章

  • C++在类里面写线程

    一、主要参考 C++ 类中使用多线程[https://blog.csdn.net/IcdKnight/articl...

  • C++ 线程类thread

    c++ 线程类 thread 注:join 是线程等待,等待子线程结束后在继续执行;线程等待要用sleep_for...

  • c++多线程总结(不断更新)

    c++ 多线程在类里的使用std::thread t(gridmapSimulFrame::getData, th...

  • 初识c++多线程

    主要参考以下两篇博客c++多线程 thread类c++实现线程池当一个thread被创建以后要么join等待线程执...

  • 任意结构体转为json String

    分类:UE4 c++ 标签:蓝图函数库 新建了一个c++写的蓝图函数类 在项目的build.cs里面添加"Json...

  • 读写锁

    锁类 共享数据类 读线程 写线程 使用类

  • c++ 实现 blocking queue

    阻塞队列就是多线程线程安全的队列,在多线程场景下经常用到,c++ 标准库里面没有提供阻塞队列,boost 中有提供...

  • C++类里面的哪些成员函数是内联函数?

    C++类里面的哪些成员函数是内联函数 1.隐式内联 2.在类里面显示声明,在类外面定义 3.“追加”内联。表示在类...

  • 关于C++层Thread的threadLoop的问题

    相关类Threads.cppthreads.hThread.h 在C++层的输入处理类中碰到一个线程相关的问题1:...

  • block底层浅谈

    函数指针是指向函数的指针变量。 C++里面的结构体相当于OC里面的类 类就有变量和方法 C++里面跟类名一样的方法...

网友评论

      本文标题:C++在类里面写线程

      本文链接:https://www.haomeiwen.com/subject/rjhazktx.html