summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-01-24 13:35:13 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-01-24 13:35:13 +0000
commit4879730427ce2e2f14e23b2d8a3cac1d0d819a31 (patch)
tree4581379078367cc23efc1415c8f1e05a722e1cde /searchlib
parentec51225758e3c28360f7b03d9f315a1298badeef (diff)
Faster atomic operations based on PR review.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/common/bitvector.h9
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();