码迷,mamicode.com
首页 > 系统相关 > 详细

linux 之 pthread_create 实现类的成员函数做参数

时间:2019-12-16 13:15:00      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:指针   art   tar   out   定义   creat   vat   通过   create   

        在C++的类中,普通成员函数不能作为pthread_create的线程函数,如果要作为pthread_create中的线程函数,必须是static !

        在C语言中,我们使用pthread_create创建线程,线程函数是一个全局函数,所以在C++中,创建线程时,也应该使用一个全局函数。static定义的类的成员函数就是一个全局函数。

class Thread
{
    private:
        pthread_t pid;
    private:
        static void * start_thread(void *arg) //静态成员函数只能访问静态变量或静态函数,通过传递this指针进行调用
        {
            Thread *ptr = (Thread *)arg;
            ptr->fpConnectionRunning();  //线程的实体是run
        }
    public: 
        int start()
        {
            if(pthread_create(&pid,NULL,start_thread,(void *)this) != 0) //´创建一个线程(必须是全局函数)
            {    
                return -1; 
            }    
            return 0;
        }
        
        virtual void fpConnectionRunning() = 0; //基类中的虚函数要么实现,要么是纯虚函数(绝对不允许声明不实现,也不纯虚)
};

class SlamData:public Thread
{

public:
    SlamData(){
            if(start()==-1){        
            std::cout<<"pthread_create error ..."<<std::endl;
          }
        }
    ~SlamData();
    
    void fpConnectionRunning();  //实现fpConnectionRunning
        
};

                

 

linux 之 pthread_create 实现类的成员函数做参数

标签:指针   art   tar   out   定义   creat   vat   通过   create   

原文地址:https://www.cnblogs.com/lovebay/p/12048401.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!