diff --git a/wifi/utils/inc/wifi_timer.h b/wifi/utils/inc/wifi_timer.h index 6930066e202f318e1aca67662a04ce55aad7c3dc..2cefd5276972a029130b2109d78bb64717acf4cb 100755 --- a/wifi/utils/inc/wifi_timer.h +++ b/wifi/utils/inc/wifi_timer.h @@ -41,6 +41,7 @@ public: private: std::unique_ptr timer_{nullptr}; + std::mutex timerMutex_; uint32_t timerIdInit = 0; }; #else diff --git a/wifi/utils/src/wifi_event_handler.cpp b/wifi/utils/src/wifi_event_handler.cpp index a389ab2abca1f75914bbbbe588a7313e5c7f08d5..05f1de9246e9284fe13e7efdd8b7e840accab879 100644 --- a/wifi/utils/src/wifi_event_handler.cpp +++ b/wifi/utils/src/wifi_event_handler.cpp @@ -108,6 +108,7 @@ private: #elif WIFI_FFRT_ENABLE constexpr int WIFI_THREAD_TIMEOUT_LIMIT = 30 * 1000 * 1000; // 30s constexpr int WIFI_THREAD_MAX_CONCURRENCY = 1; +const std::string WIFI_TASK_NAME = "WifiEventHandlerTask"; inline ffrt_queue_t* TransferQueuePtr(std::shared_ptr queue) { if (queue) { @@ -185,14 +186,15 @@ public: WIFI_LOGE("PostAsyncTask: eventQueue is nullptr!"); return false; } + std::string taskName = WIFI_TASK_NAME + "(" + name + ")"; int64_t delayTimeUs = delayTime * 1000; - WIFI_LOGD("PostAsyncTask Enter %{public}s", name.c_str()); + WIFI_LOGD("PostAsyncTask Enter %{public}s", taskName.c_str()); ffrt::task_handle handle = nullptr; if (isHighPriority) { handle = eventQueue->submit_h(callback, - ffrt::task_attr().name(name.c_str()).delay(delayTimeUs).priority(ffrt_queue_priority_immediate)); + ffrt::task_attr().name(taskName.c_str()).delay(delayTimeUs).priority(ffrt_queue_priority_immediate)); } else { - handle = eventQueue->submit_h(callback, ffrt::task_attr().name(name.c_str()).delay(delayTimeUs)); + handle = eventQueue->submit_h(callback, ffrt::task_attr().name(taskName.c_str()).delay(delayTimeUs)); } if (handle == nullptr) { return false; @@ -202,13 +204,14 @@ public: void RemoveAsyncTask(const std::string &name) { std::lock_guard lock(eventQurueMutex); - WIFI_LOGD("RemoveAsyncTask Enter %{public}s", name.c_str()); + std::string taskName = WIFI_TASK_NAME + "(" + name + ")"; + WIFI_LOGD("RemoveAsyncTask Enter %{public}s", taskName.c_str()); ffrt_queue_t* queue = TransferQueuePtr(eventQueue); if (queue == nullptr) { WIFI_LOGE("RemoveAsyncTask is unavailable."); return; } - int ret = ffrt_queue_cancel_by_name(*queue, name.c_str()); + int ret = ffrt_queue_cancel_by_name(*queue, taskName.c_str()); if (ret != 0) { WIFI_LOGD("RemoveAsyncTask failed."); } @@ -221,8 +224,9 @@ public: WIFI_LOGE("HasAsyncTask is unavailable."); return -1; } - bool result = ffrt_queue_has_task(*queue, name.c_str()); - WIFI_LOGD("HasAsyncTask Enter %{public}s %{public}d", name.c_str(), static_cast(result)); + std::string taskName = WIFI_TASK_NAME + "(" + name + ")"; + bool result = ffrt_queue_has_task(*queue, taskName.c_str()); + WIFI_LOGD("HasAsyncTask Enter %{public}s %{public}d", taskName.c_str(), static_cast(result)); hasTask = result; return 0; } diff --git a/wifi/utils/src/wifi_timer.cpp b/wifi/utils/src/wifi_timer.cpp index 2aae240b8b4f9787f28de3be7ce46663da42c6f9..5d1a61df7b42a3c432ddc1ba96fef1a1ba65d0ea 100755 --- a/wifi/utils/src/wifi_timer.cpp +++ b/wifi/utils/src/wifi_timer.cpp @@ -26,6 +26,7 @@ WifiTimer *WifiTimer::GetInstance() #ifdef WIFI_FFRT_ENABLE WifiTimer::WifiTimer() : timer_(std::make_unique("WifiManagerTimer")) { + std::lock_guard lock(timerMutex_); timerIdInit = 0; } @@ -42,6 +43,7 @@ ErrCode WifiTimer::Register(const TimerCallback &callback, uint32_t &outTimerId, WIFI_LOGE("timer_ is nullptr"); return WIFI_OPT_FAILED; } + std::lock_guard lock(timerMutex_); timerIdInit++; outTimerId = timerIdInit; bool ret = timer_->PostAsyncTask(callback, std::to_string(timerIdInit), interval);