- 论坛徽章:
- 0
|
本来3个线程是在一个类中开启的,现在改了代码,写了3个子类继承该父类,现在不清楚怎么在父类中启动线程了。请教
这是父类cm.h和cm.cpp中的内容- class CM {
- public:
- CManagerPing();
- virtual ~CManagerPing();
- private:
- int m_bthreadrunning;//线程是否运行
- pthread_t m_threadid;
- pthread_t m_threadidex;
- public:
- void StartWorkThread();//启动工作线程
- void StopWorkThread();//停止工作线程
- /*void RunWorkThread();// 运行工作线程(本来是在父类中的,现在把它移到子类中了)
- void WorkFunction(int m_CheckExPing);//工作函数
- };
复制代码- void CM::StartWorkThread(){
- m_bthreadrunning=1;
- pthread_create(&m_threadid,NULL,ThreadForRun,this);
- }
- static void*ThreadForRun(void*arg){
- CManagerPing*pManagerPing=(CManagerPing*)arg;
- pManagerPing->RunWorkThread(); //这里这样写就肯定有问题了,不清楚这里该怎么改,肯定要调用子类中的RunWorkThread();
- return arg;
- }
复制代码 接下来是子类- class FM:public CM {
- private:
- //普通PING有关变量
- LOCALIPLIST m_u;
- SETSTRINGIP m_t;//发送队列
- char m_m[16];
- public:
- void RunWorkThread();//运行工作线程
- void WorkFunction(int m_CheckExPing);//工作函数,是否特殊PING
复制代码 在子类中void RunWorkThread();已经实现,现在就是想问如何在父类中调到这个函数 |
|