類成員函數創建一個線程去調用類成員另外一個函數時,有兩種解決辦法。
第一種比較麻煩,
舉例說明,比如有一個類
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);
}