diff options
author | Tor Egge <Tor.Egge@online.no> | 2022-04-28 14:24:09 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2022-04-28 14:24:09 +0200 |
commit | 93e87328d0d4e1be55754c223f1773de43ec110c (patch) | |
tree | 94dc45c55ee6819cdbbb277802c3416eedeebc45 /vespalib | |
parent | a2a2a0a48d11979db706a0a3a638ec77fdffe71e (diff) |
Use atomic _heldBytes in vespalib::GenerationHolder
Diffstat (limited to 'vespalib')
-rw-r--r-- | vespalib/src/vespa/vespalib/util/generationholder.cpp | 6 | ||||
-rw-r--r-- | vespalib/src/vespa/vespalib/util/generationholder.h | 4 |
2 files changed, 5 insertions, 5 deletions
diff --git a/vespalib/src/vespa/vespalib/util/generationholder.cpp b/vespalib/src/vespa/vespalib/util/generationholder.cpp index 122edf23da1..5bfa7d152ce 100644 --- a/vespalib/src/vespa/vespalib/util/generationholder.cpp +++ b/vespalib/src/vespa/vespalib/util/generationholder.cpp @@ -17,14 +17,14 @@ GenerationHolder::~GenerationHolder() { assert(_hold1List.empty()); assert(_hold2List.empty()); - assert(_heldBytes == 0); + assert(getHeldBytes() == 0); } void GenerationHolder::hold(GenerationHeldBase::UP data) { _hold1List.push_back(GenerationHeldBase::SP(data.release())); - _heldBytes += _hold1List.back()->getSize(); + _heldBytes.store(getHeldBytes() + _hold1List.back()->getSize(), std::memory_order_relaxed); } void @@ -50,7 +50,7 @@ GenerationHolder::trimHoldListsSlow(generation_t usedGen) GenerationHeldBase &first = *_hold2List.front(); if (static_cast<sgeneration_t>(first._generation - usedGen) >= 0) break; - _heldBytes -= first.getSize(); + _heldBytes.store(getHeldBytes() - first.getSize(), std::memory_order_relaxed); _hold2List.erase(_hold2List.begin()); } } diff --git a/vespalib/src/vespa/vespalib/util/generationholder.h b/vespalib/src/vespa/vespalib/util/generationholder.h index 1ca2e54a84d..0bc630404af 100644 --- a/vespalib/src/vespa/vespalib/util/generationholder.h +++ b/vespalib/src/vespa/vespalib/util/generationholder.h @@ -53,7 +53,7 @@ private: HoldList _hold1List; HoldList _hold2List; - size_t _heldBytes; + std::atomic<size_t> _heldBytes; /** * Transfer holds from hold1 to hold2 lists, assigning generation. @@ -93,7 +93,7 @@ public: } void clearHoldLists(); - size_t getHeldBytes() const { return _heldBytes; } + size_t getHeldBytes() const { return _heldBytes.load(std::memory_order_relaxed); } }; } |