From affc8da67397e9ce94790950c5300d2be4648b7f Mon Sep 17 00:00:00 2001 From: li-tiangang4 Date: Thu, 14 Nov 2024 11:25:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A4=9A=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E5=B9=B6=E5=8F=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: li-tiangang4 --- .../include/task/offline_task.h | 2 ++ .../src/task/offline_task.cpp | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/services/distributedhardwarefwkservice/include/task/offline_task.h b/services/distributedhardwarefwkservice/include/task/offline_task.h index 2bba2b05..0be333ed 100644 --- a/services/distributedhardwarefwkservice/include/task/offline_task.h +++ b/services/distributedhardwarefwkservice/include/task/offline_task.h @@ -17,6 +17,7 @@ #define OHOS_DISTRIBUTED_HARDWARE_OFFLINE_TASK_H #include +#include #include "task.h" @@ -50,6 +51,7 @@ private: std::condition_variable finishCondVar_; std::mutex unFinishTaskMtx_; std::set unFinishChildrenTasks_; + std::atomic isDeviceOffline_{false}; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/distributedhardwarefwkservice/src/task/offline_task.cpp b/services/distributedhardwarefwkservice/src/task/offline_task.cpp index be7b89b4..04fb7c09 100644 --- a/services/distributedhardwarefwkservice/src/task/offline_task.cpp +++ b/services/distributedhardwarefwkservice/src/task/offline_task.cpp @@ -61,6 +61,10 @@ void OffLineTask::DoTask() void OffLineTask::DoTaskInner() { + if (isDeviceOffline_.load()) { + DHLOGW("Started releasing all resource and unloading sa."); + return; + } int32_t ret = pthread_setname_np(pthread_self(), OFFLINE_TASK_INNER); if (ret != DH_FWK_SUCCESS) { DHLOGE("DoTaskInner setname failed."); @@ -98,7 +102,8 @@ void OffLineTask::DoTaskInner() if (DHContext::GetInstance().GetRealTimeOnlineDeviceCount() == 0 && DHContext::GetInstance().GetIsomerismConnectCount() == 0 && TaskBoard::GetInstance().IsAllTaskFinish()) { - DHLOGI("all devices are offline, start to free the resource"); + isDeviceOffline_.store(true); + DHLOGI("all devices are offline, start to free the resource and set the flag to true."); DistributedHardwareManagerFactory::GetInstance().UnInit(); } } -- Gitee