diff --git a/host/smartperf/client/client_command/task_manager.cpp b/host/smartperf/client/client_command/task_manager.cpp index 39432b438444dedd956229d4a2328ff20efd4b55..4eff8e9d13eacd1e8bd80a5aaaa0fc8203b6ec52 100644 --- a/host/smartperf/client/client_command/task_manager.cpp +++ b/host/smartperf/client/client_command/task_manager.cpp @@ -325,6 +325,7 @@ void TaskManager::Start(bool record) } LOGD("main loop exit"); ProcessOnceTask(false); + running_ = false; finishCond_.notify_all(); }); } @@ -416,7 +417,7 @@ void TaskManager::Stop(bool pause) void TaskManager::Wait() { std::unique_lock lock(finishMtx_); - finishCond_.wait(lock); + finishCond_.wait(lock, [this] { return !running_.load(); }); } void TaskManager::CollectData(std::map>& datas)