gpt4 book ai didi

c++ - 类中的linux C++线程

转载 作者:太空狗 更新时间:2023-10-29 21:07:23 24 4
gpt4 key购买 nike

您好,我想用创建类后将在单独线程中启动的方法来完成类。那我是怎么做到的:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com