diff --git a/services/audiomanager/managersource/src/daudio_source_manager.cpp b/services/audiomanager/managersource/src/daudio_source_manager.cpp index f84878aced3918ff96091cb07eef5141b006f764..41a7e146eb26f5107b440f585f178259e15ed698 100644 --- a/services/audiomanager/managersource/src/daudio_source_manager.cpp +++ b/services/audiomanager/managersource/src/daudio_source_manager.cpp @@ -89,8 +89,8 @@ int32_t DAudioSourceManager::Init(const sptr &callback) DHLOGE("load av transport receiver engine provider failed."); return ERR_DH_AUDIO_FAILED; } - if (!isHicollieRunning_.load()) { - isHicollieRunning_.store(true); + bool except = false; + if (isHicollieRunning_.compare_exchange_strong(except, true)) { listenThread_ = std::thread([this]() { this->ListenAudioDev(); }); if (pthread_setname_np(listenThread_.native_handle(), LISTEN_THREAD) != DH_SUCCESS) { DHLOGE("Dev clear thread setname failed.");