原理:定义好处理函数之后,为其定义一个Helper的静态函数,在该静态函数中调用成员函数。pthread_create中绑定的是Helper的静态函数,并传输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;
}