2017-03-16 77 views
0

如何將成員函數作爲參數傳遞給pthread_create函數?如何將對象的成員函數作爲參數傳遞給pthread_create?

實施例:

class A 
    { 
     public: 
     A(){} 

     void funcForThread(Person p) { 
      //code... 
     } 

     void createThread(Person p) { 
      pthread_t thread1; 
      pthread_attr_init (&attr); 
      pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_JOINABLE); 
      pthread_create (&thread1, &attr, /* what to write here*/); // need to pass funcForThread and Person p object there 
     } 

     private: 
     pthread_attr_t attr; 
    }; 
+0

這不是C,因爲C沒有類或成員函數。 – Barmar

+1

您需要傳遞代理功能。 – Barmar

+0

@Barmar我不知道代理功能是什麼,請你提供一個例子嗎? – stilltryingbutstillsofar

回答

0

就這樣

void * 
call_member(void *data) 
{ 
    A *a = reinterpret_cast<A *>(data); 
    a->member(); 

    return NULL; 
} 

然後,

pthread_create(&thread1, &attr, call_member, this); 
相關問題