我的代码具有以下基本结构,
pthread_t worker, processor;
int i = 0;
int main(..) {
pthread_create(worker,NULL,loop,NULL);
char inp;
cin >> inp;
while(inp != 'q') {
cin >> inp;
}
i = 1;
pthread_join(processor,NULL);
pthread_join(worker,NULL);
return 0;
}
void *loop(..) {
while(i==0) {
//do stuff
pthread_join(processor,NULL);
pthread_create(processor,NULL,process,NULL);
}
pthread_exit(NULL);
}
void *process(..) {
//do stuff
pthread_exit(NULL);
}
除非我按'q',否则一切正常,
调用纯虚方法,在没有活动异常的情况下终止调用
就在退出之前。我不明白为什么,因为我加入了我退出之前创建的所有线程。帮助!
我正在使用gcc
在debian(armhf)上运行它编辑:我尝试了上面的示例而没有我的opencv内容,没有问题。所以我相信我提出了错误的问题。 在gdb中,我可以看到我对opencv(3.0.0)API的第一次调用生成了8个线程。他们永远不会退出。 这些线程可能在退出之前没有连接吗?我不知道如何让他们加入,因为我不是创造他们的人。