0

我面临一个问题,其中我有两个任务正在运行,一个是父任务,一个是子任务,子任务正在运行一个无限循环,并且满足某些条件我想手动终止子执行。我怎么能在待定

4

1 回答 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 回答