C++中,pthread_create註冊回調函數,該函數爲類的成員函數

原理:定義好處理函數以後,爲其定義一個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;
}
相關文章
相關標籤/搜索