嗨,我想使用方法来创建类,该方法将在创建类后在单独的线程中启动。那我是怎么做的:

class Devemu {
int VarInc;

void Increm() {
    for(;;) {
        if (VarInc > 532) VarInc = 0;
        else VarInc++;
    }
}

public:
static void* IncWrapper(void* thisPtr) {
    ((Devemu*) thisPtr)->Increm();
    return NULL;
}
Devemu() {
    VarInc = 0;
}
int Var() {
    return VarInc;
}
};
int main(int argc, char** argv) {

Devemu* em = new Devemu();
pthread_t thread_id;
pthread_create(&thread_id, NULL, &Devemu::IncWrapper, NULL);


for(int i = 0 ;i < 50; i++) {
printf("%d\n", em->Var());
}
return (EXIT_SUCCESS);
}

我与 main 和 IncWrapper 方法中的 pthread_create 不同,我可以更改它吗?

最佳答案

是的,如果你愿意,你可以把它放在构造函数中:

class Devemu {
int VarInc;
pthread_t thread_id;

void Increm() {
    for(;;) {
        if (VarInc > 532) VarInc = 0;
        else VarInc++;
    }
}

public:
static void* IncWrapper(void* thisPtr) {
    ((Devemu*) thisPtr)->Increm();
    return NULL;
}
Devemu() {
    VarInc = 0;

    pthread_create(&thread_id, NULL, &Devemu::IncWrapper, NULL);
}
int Var() {
    return VarInc;
}
};

关于c++ - 类中的 linux C++ 线程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5242398/

10-13 06:03