1

我在我的应用程序中使用 pthread 进行多线程处理:

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

args基本上是一个结构,由另一个对象的实例和回调引用组成:

struct Args {

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

使用msgObj,我在一个 while 循环中连续调用它的方法之一。第一次方法被调用,但在下一个循环msgObj中变为空。

为什么是这样 ?

编辑

线程内实例的构造

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

0 回答 0