私はマルチスレッドが初めてです。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 の場合、runSearch() が完了するまでさらに 9 分待つのではなく、すぐに run() を終了します。