diff options
| author | Stefan Boberg <[email protected]> | 2023-10-05 13:53:42 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2023-10-05 13:53:42 +0200 |
| commit | aa202f615a42373f5116859f0ff4e8b7123ed3d5 (patch) | |
| tree | 08ce61481cab02f1f47ae39a652001b8c5992f00 /src | |
| parent | trivial: log output typo in GC (diff) | |
| parent | 0.2.26-pre3 (diff) | |
| download | zen-aa202f615a42373f5116859f0ff4e8b7123ed3d5.tar.xz zen-aa202f615a42373f5116859f0ff4e8b7123ed3d5.zip | |
Merge branch 'main' of https://github.com/EpicGames/zen
Diffstat (limited to 'src')
| -rw-r--r-- | src/zenserver/cache/cachedisklayer.cpp | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/src/zenserver/cache/cachedisklayer.cpp b/src/zenserver/cache/cachedisklayer.cpp index 7ce713de9..fafc6bbee 100644 --- a/src/zenserver/cache/cachedisklayer.cpp +++ b/src/zenserver/cache/cachedisklayer.cpp @@ -1805,12 +1805,18 @@ ZenCacheDiskLayer::CollectGarbage(GcContext& GcCtx) { ZEN_TRACE_CPU("Z$::Disk::CollectGarbage"); - RwLock::SharedLockScope _(m_Lock); - - for (auto& Kv : m_Buckets) + std::vector<CacheBucket*> Buckets; + { + RwLock::SharedLockScope _(m_Lock); + Buckets.reserve(m_Buckets.size()); + for (auto& Kv : m_Buckets) + { + Buckets.push_back(Kv.second.get()); + } + } + for (CacheBucket* Bucket : Buckets) { - CacheBucket& Bucket = *Kv.second; - Bucket.CollectGarbage(GcCtx); + Bucket->CollectGarbage(GcCtx); } } @@ -2261,12 +2267,18 @@ ZenCacheDiskLayer::GatherReferences(GcContext& GcCtx) { ZEN_TRACE_CPU("Z$::Disk::GatherReferences"); - RwLock::SharedLockScope _(m_Lock); - - for (auto& Kv : m_Buckets) + std::vector<CacheBucket*> Buckets; + { + RwLock::SharedLockScope _(m_Lock); + Buckets.reserve(m_Buckets.size()); + for (auto& Kv : m_Buckets) + { + Buckets.push_back(Kv.second.get()); + } + } + for (CacheBucket* Bucket : Buckets) { - CacheBucket& Bucket = *Kv.second; - Bucket.GatherReferences(GcCtx); + Bucket->GatherReferences(GcCtx); } } |