原理:定義好處理函數(shù)之后,為其定義一個Helper的靜態(tài)函數(shù),在該靜態(tài)函數(shù)中調用成員函數(shù)。pthread_create中綁定的是Helper的靜態(tài)函數(shù),并傳輸this指針。
實現(xiàn):
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;
}