当前位置: 技术问答>linux和unix
在类中是否可以(如果可以的话,怎么)调用线程
来源: 互联网 发布时间:2016-12-21
本文导语: 想做个服务器端的开发,有个想法,是否可以在类的成员函数中创建一个线程,用该线程去处理一些定时查询的功能。 但是在实现的时候发现有些问题。创建完线程之后,处理函数的地址应该怎么给? 试用了三种方...
想做个服务器端的开发,有个想法,是否可以在类的成员函数中创建一个线程,用该线程去处理一些定时查询的功能。
但是在实现的时候发现有些问题。创建完线程之后,处理函数的地址应该怎么给?
试用了三种方法,一种向普通线程一样定义(知道不管用,但是也试了试);另一种把入口函数定义成该类的静态成员函数;第三种把入口函数定义成该类的一般成员函数;
下面是代码:
但是在实现的时候发现有些问题。创建完线程之后,处理函数的地址应该怎么给?
试用了三种方法,一种向普通线程一样定义(知道不管用,但是也试了试);另一种把入口函数定义成该类的静态成员函数;第三种把入口函数定义成该类的一般成员函数;
下面是代码:
#include
class classthread
{
public:
void start();
void * proc(void * arg);
//static void * proc(void * arg);
};
//头文件
#include "classthread.h"
#include
#include
void classthread::start()
{
pthread_t threadID=100;
//m_thread=pthread_create(&threadID,NULL, (void *)&(classthread::proc), NULL);
m_thread=pthread_create(&threadID,NULL, (void *)proc, NULL);
while(1)
{
printf("server is running;n");
}
}
void * proc(void * arg)
{
while(1)
{
sleep(3);
printf("subthread is runningn");
}
}
/*
void * classthread::proc(void * arg)
{
while(1)
{
sleep(3);
printf("sub thread is running;n");
}
}
*/
|
线程函数可以是类得成员函数,具体有三种方法:使用static函数;使用友元函数;使用回调函数。
具体见:http://blog.csdn.net/braveyly/article/details/3446472
具体见:http://blog.csdn.net/braveyly/article/details/3446472