diff options
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); } }; } |