我是多线程的新手。我在 unix 上使用 c++。
在下面的代码中,runSearch() 需要很长时间,我希望能够在“cancel == true”后立即终止搜索。函数 cancelSearch 由另一个线程调用。
解决此问题的最佳方法是什么?
谢谢..
------------------这是现有的代码-------------------------
struct SearchTask : public Runnable
{
bool cancel = false;
void cancelSearch()
{
cancel = true;
}
void run()
{
cancel = false;
runSearch();
if (cancel == true)
{
return;
}
//...more steps.
}
}
编辑:为了更清楚,说 runSearch() 需要 10 分钟才能运行。1 分钟后,cancel==true,然后我想立即退出 run(),而不是再等 9 分钟让 runSearch() 完成。