我面临一个问题,其中我有两个任务正在运行,一个是父任务,一个是子任务,子任务正在运行一个无限循环,并且满足某些条件我想手动终止子执行。我怎么能在待定
问问题
675 次
1 回答
1
你想突然终止任务,还是让它很好地离开循环,以便任务可以自行结束?
对于第一种情况,您可能可以使用destroy方法
第二种情况可能是构建代码的更好方法。假设您的循环具有以下条件
while(!finished) {
...
}
您可以将其更改为对finished
变量使用锁定,这样您也可以从任务外部访问它,并在您希望任务结束时更改其值。您只需使用以下函数来读取和写入值,而不是在任务外部和内部直接访问变量。
tbb::mutex lock;
bool finished;
void finish() {
lock.lock();
finished = true;
lock.unlock();
}
bool is_finished() {
lock.lock();
bool ret = finished;
lock.unlock();
return ret;
}
所以循环条件现在是And 在你想要它结束时while(! is_finished())
调用的主线程中的某个地方task.finish()
于 2013-03-22T10:11:19.837 回答