我正在使用线程,worker函数如下:
void threadDoIt(tso* tso0){
while (true){
task t = tso0->getNextTask();
if (t.getState() == empty){
break;
}
else {
t.execute();
TAL::taskExecuted(t);
}
}
}
/*...*/
vector<thread> threads;
for (int i = 0; i < cpus; i++){
threads.push_back(thread(threadDoIt, tsos.at(i)));
}
for (int i = 0; i < threads.size(); i++){
threads[i].join();
}
我经历过,有时候所有的任务都会被执行,但有时却没有。看起来连接方法存在问题。有什么想法吗?