diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-01-24 13:35:13 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-01-24 13:35:13 +0000 |
commit | 4879730427ce2e2f14e23b2d8a3cac1d0d819a31 (patch) | |
tree | 4581379078367cc23efc1415c8f1e05a722e1cde /searchlib | |
parent | ec51225758e3c28360f7b03d9f315a1298badeef (diff) |
Faster atomic operations based on PR review.
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/common/bitvector.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/searchlib/src/vespa/searchlib/common/bitvector.h b/searchlib/src/vespa/searchlib/common/bitvector.h index f0c720086ab..e058f0d3f78 100644 --- a/searchlib/src/vespa/searchlib/common/bitvector.h +++ b/searchlib/src/vespa/searchlib/common/bitvector.h @@ -197,8 +197,8 @@ public: std::swap(_startOffset, rhs._startOffset); std::swap(_sz, rhs._sz); Index tmp = rhs._numTrueBits; - rhs._numTrueBits = _numTrueBits.load(); - _numTrueBits = tmp; + rhs._numTrueBits = _numTrueBits.load(std::memory_order_relaxed); + _numTrueBits.store(tmp, std::memory_order_relaxed); } /** @@ -287,12 +287,13 @@ private: void setGuardBit() { setBit(size()); } void incNumBits() { if ( isValidCount() ) { - _numTrueBits.fetch_add(1, std::memory_order_relaxed); + _numTrueBits.store(_numTrueBits.load(std::memory_order_relaxed) + 1, std::memory_order_relaxed); } } void decNumBits() { if ( isValidCount() ) { - _numTrueBits.fetch_sub(1, std::memory_order_relaxed); + _numTrueBits.store(_numTrueBits.load(std::memory_order_relaxed) - 1, std::memory_order_relaxed); + } } VESPA_DLL_LOCAL void repairEnds(); |