次のように、アプリケーションでマルチスレッドに pthread を使用しています。
pthread_create(&id1, NULL, &RecvMessageManager::test, args);
args
基本的に、別のオブジェクトのインスタンスとコールバック参照で構成される構造体です。
struct Args {
Obj * msgObj;
void (*callBack)(std::string& header, std::string& payload);
};
を使用してmsgObj
、while ループ内でそのメソッドの 1 つを継続的に呼び出しています。初めてメソッドが呼び出されますが、次のループでmsgObj
null になります。
どうしてこれなの ?
編集
スレッド内のインスタンスの構築
struct Args * args = (struct Args *)val;
this -> msgObj = args -> msgObj;
this -> callBack = args -> callBack;
RecvMessageManager * thisObj = args -> thisObj;