diff --git a/libpurgeablemem/cpp/src/purgeable_mem_base.cpp b/libpurgeablemem/cpp/src/purgeable_mem_base.cpp index 5fe2900bc45aca141c162b5fb375d1bb3e3bbf27..0c5a9357dac437ad77716ded04e3851dc74a8fe4 100644 --- a/libpurgeablemem/cpp/src/purgeable_mem_base.cpp +++ b/libpurgeablemem/cpp/src/purgeable_mem_base.cpp @@ -97,6 +97,7 @@ bool PurgeableMemBase::BeginRead() void PurgeableMemBase::EndRead() { + std::lock_guard lock(dataLock_); if (isDataValid_) { Unpin(); } @@ -141,6 +142,7 @@ bool PurgeableMemBase::BeginWrite() void PurgeableMemBase::EndWrite() { + std::lock_guard lock(dataLock_); PM_HILOG_DEBUG(LOG_CORE, "%{public}s %{public}s", __func__, ToString().c_str()); Unpin(); } @@ -233,6 +235,7 @@ inline std::string PurgeableMemBase::ToString() const void PurgeableMemBase::SetRebuildSuccessCallback(std::function &callback) { + std::lock_guard lock(dataLock_); if (builder_) { builder_->SetRebuildSuccessCallback(callback); } @@ -240,11 +243,13 @@ void PurgeableMemBase::SetRebuildSuccessCallback(std::function &callback bool PurgeableMemBase::IsDataValid() { + std::lock_guard lock(dataLock_); return isDataValid_; } void PurgeableMemBase::SetDataValid(bool target) { + std::lock_guard lock(dataLock_); isDataValid_ = target; } } /* namespace PurgeableMem */