これを行う最善の OOP の方法は次のとおりです。メンバー関数( )を呼び出すエントリ ポイント( ) を定義します。エントリ ポイントはスレッドを開始し、 を呼び出します。その後、すべてのメンバー変数とメソッドにアクセスできます。entryPoint()
myThreadproc()
myThreadproc
myClassA.h
class A
{
static void *entryPoint(void *arg);
void myThreadproc();
void myfoo1();
void myfoo2();
}
myClassA.cpp
void *A::entryPoint(void *arg)
{
A *thisClass = (A *)arg;
thisClass-> myThreadproc();
}
void A::myThreadproc()
{
//Now this function is running in the thread..
myfoo1();
myfoo2();
}
これで、次のようにスレッドを作成できます。
int main()
{
pthread_t thread_id;
pthread_create(&thread_id,NULL,(A::entryPoint),new A());
//Wait for the thread
return 0;
}