1

次のように、アプリケーションでマルチスレッドに pthread を使用しています。

pthread_create(&id1, NULL, &RecvMessageManager::test, args);

args基本的に、別のオブジェクトのインスタンスとコールバック参照で構成される構造体です。

struct Args {

    Obj * msgObj;
    void (*callBack)(std::string& header, std::string& payload);
};

を使用してmsgObj、while ループ内でそのメソッドの 1 つを継続的に呼び出しています。初めてメソッドが呼び出されますが、次のループでmsgObjnull になります。

どうしてこれなの ?

編集

スレッド内のインスタンスの構築

    struct Args * args = (struct Args *)val;
    this -> msgObj = args -> msgObj;
    this -> callBack = args -> callBack;
    RecvMessageManager * thisObj = args -> thisObj;
4

0 に答える 0