类成员函数创建一个线程去调用类成员另外一个函数时,有两种解决办法。
第一种比较麻烦,
举例说明,比如有一个类
void* gStartVod(void* pVoid);
class Record{
friend void* gStartVod(void* pVoid);
void create_pthread_fun(void* pVoid);
void* thread(void* pVoid);
static Record *_record;
pthread_id _threadId;
}
void*
gSaveVideoData(void* pVoid)
{
Record::_record->thread(pVoid);
}
void Record::create_pthread_fun(void* pVoid)
{
pthread_create(&_threadId, NULL, gSaveVideoData2, pVoid);
}
在类中定一个类本身的静态指针变量。定义一个全局函数.如上来实现对类成员的调用.
第二种方法比较简单,把被调用的类成员函数声明为静态变量即可.
class Record{
friend void* gStartVod(void* pVoid);
void create_pthread_fun(void* pVoid);
static void* thread(void* pVoid);
pthread_id _threadId;
}
void Record::create_pthread_fun(void* pVoid)
{
pthread_create(&_threadId, NULL, thread, pVoid);
}