diff --git a/interfaces/inner_api/cjffi/native/ffi_remote_data.cpp b/interfaces/inner_api/cjffi/native/ffi_remote_data.cpp index 5fb514420c5f005318fd54811f6d66d06c4b4b5f..4fc38a645d2ae8274edeebc024cbacd861e904a6 100644 --- a/interfaces/inner_api/cjffi/native/ffi_remote_data.cpp +++ b/interfaces/inner_api/cjffi/native/ffi_remote_data.cpp @@ -39,7 +39,7 @@ FFIDataManager* FFIDataManager::GetInstance() void FFIDataManager::StoreFFIData(const sptr& data) { - std::lock_guard lock(mtx); + std::lock_guard lock(mtx); int64_t id = data->GetID(); // 0 represents invalid status if (id == 0) { @@ -52,13 +52,13 @@ void FFIDataManager::StoreFFIData(const sptr& data) void FFIDataManager::StoreRemoteData(const sptr& data) { - std::lock_guard lock(mtx); + std::lock_guard lock(mtx); remoteDataStore_[data->GetID()] = data; } int64_t FFIDataManager::NewFFIDataId() { - std::lock_guard lock(mtx); + std::lock_guard lock(mtx); if (static_cast(ffiDataStore_.size()) >= maxCapacity) { HiLog::Fatal(LABEL, "FFIData store_ over max capacity: %{public}" PRId64, maxCapacity); // 0 represents invalid status in CJ RemoteData, will be handled by CJ Exception diff --git a/interfaces/inner_api/cjffi/native/ffi_remote_data.h b/interfaces/inner_api/cjffi/native/ffi_remote_data.h index 72c7da77f6fb90225f0cdcd11a6c372d40d9ed06..cfd13739163c5eb8bb6ca01b726044925ba73221 100644 --- a/interfaces/inner_api/cjffi/native/ffi_remote_data.h +++ b/interfaces/inner_api/cjffi/native/ffi_remote_data.h @@ -41,13 +41,13 @@ public: sptr GetFFIData(int64_t id) { - std::lock_guard lock(mtx); + std::lock_guard lock(mtx); return ffiDataStore_[id]; } sptr GetRemoteData(int64_t id) { - std::lock_guard lock(mtx); + std::lock_guard lock(mtx); auto existP = remoteDataStore_[id]; return existP.promote(); } @@ -55,12 +55,12 @@ public: void StoreRemoteData(const sptr& data); void RemoveFFIData(int64_t id) { - std::lock_guard lock(mtx); + std::lock_guard lock(mtx); ffiDataStore_.erase(id); } void RemoveRemoteData(int64_t id) { - std::lock_guard lock(mtx); + std::lock_guard lock(mtx); remoteDataStore_.erase(id); } @@ -73,7 +73,7 @@ private: // maxCapacity can be set to a larger number if needed, make sure maxCapacity is not larger than maxId const int64_t maxCapacity = MAX_INT64; static FFIDataManager* instance_; - std::mutex mtx; + std::recursive_mutex mtx; std::unordered_map> ffiDataStore_; std::unordered_map> remoteDataStore_;