創建線程調用類成員函數的方法。

 類成員函數創建一個線程去調用類成員另外一個函數時,有兩種解決辦法。

第一種比較麻煩,
舉例說明,比如有一個類
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);  

}

發佈了135 篇原創文章 · 獲贊 34 · 訪問量 94萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章