原理:定義好處理函數以後,爲其定義一個Helper的靜態函數,在該靜態函數中調用成員函數。pthread_create中綁定的是Helper的靜態函數,並傳輸this指針。函數
實現:
this
class NDNMib { public: NDNMib():m_pid(-1){} void start(); ~NDNMib() { if(m_pid!=-1) { pthread_kill(&m_pid, SIGKILL); } } private: void startProcessEnvents(void); static void* startProcessEventsHelper(void*); private: ndn::Face m_face; pthread_t m_pid; }; void NDNMib::start() { pthread_create(&m_pid, NULL, &NDNMib::startProcessEventsHelper, this); } void NDNMib::startProcessEvents() { try { while(true) { m_face.processEvents(); } } catch(std::exception e) { } } void* NDNMib::startProcessEventsHelper(void* args) { ((NDNMib*)args)->startProcessEvents(); return NULL; }