私の環境は、ARM gnueabi 上の Linux-Xenomai の C++ です。新しい pthread の生成に成功した後、クラス インスタンスがスレッドのスコープ外にあることがわかりました。スレッドからクラス インスタンス オブジェクト、変数、構造体などにアクセスすると、任意の値が返され、多くの場合、'Segmentation Fault' が返されました。
ネットで解決策を探すのに何日も費やした後、私は推測して、「this」ポインターを pthread_create の引数として使用してみました。そして出来上がり!クラス インスタンスがスレッドから見えるようになりました。問題はなぜですか?
void*(*server_listener_fptr)(void*); // declare the function ptr
server_listener_fptr = reinterpret_cast<void*(*)(void*)>(&UDP_ClientServer::server_listener);
iret = pthread_create(&s_thread, NULL, server_listener_fptr, this);