Skip to content

Commit d19035e

Browse files
committed
relax memory ordering: we can use std::memory_order_relaxed for statistics
1 parent e93d962 commit d19035e

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

DataEngine.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ std::optional<DataEngine::ExtendedValue> DataEngine::get(const std::string_view
1010
const auto iter = m_data.find(strName);
1111
if (iter == m_data.cend())
1212
{
13-
m_reads.fetch_add(1, std::memory_order_acq_rel);
13+
m_reads.fetch_add(1, std::memory_order_relaxed);
1414
return {};
1515
}
1616

1717
// Potentially we can get small inconsistency while copying different statistics values. It is acceptable.
18-
const auto reads = iter->second.m_reads.fetch_add(1, std::memory_order_acq_rel) + 1;
19-
const auto writes = iter->second.m_writes.load(std::memory_order_acquire);
18+
const auto reads = iter->second.m_reads.fetch_add(1, std::memory_order_relaxed) + 1;
19+
const auto writes = iter->second.m_writes.load(std::memory_order_relaxed);
2020

21-
m_reads.fetch_add(1, std::memory_order_acq_rel);
21+
m_reads.fetch_add(1, std::memory_order_relaxed);
2222

2323
return { std::move(ExtendedValue{iter->second.m_value, {reads, writes}}) };
2424
}
@@ -55,11 +55,11 @@ void DataEngine::set(const std::string_view name, const std::string_view value)
5555
}
5656
else
5757
{
58-
iter->second.m_writes.fetch_add(1, std::memory_order_acq_rel);
58+
iter->second.m_writes.fetch_add(1, std::memory_order_relaxed);
5959
iter->second.m_value = value;
6060
}
6161

62-
m_writes.fetch_add(1, std::memory_order_acq_rel);
62+
m_writes.fetch_add(1, std::memory_order_relaxed);
6363
}
6464

6565
void DataEngine::enumerate(const std::function<EnumerateVisitorProc>& visitor) const
@@ -75,5 +75,5 @@ void DataEngine::enumerate(const std::function<EnumerateVisitorProc>& visitor) c
7575
DataEngine::AccessStatistics DataEngine::get_global_statistics() const
7676
{
7777
// No need in full consistency here
78-
return { m_reads.load(std::memory_order_acquire), m_writes.load(std::memory_order_acquire) };
78+
return { m_reads.load(std::memory_order_relaxed), m_writes.load(std::memory_order_relaxed) };
7979
}

DataEngine.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@ class DataEngine
4646
// Define copy-constructor to allow easier emplacing of such values into unordered_map values
4747
AtomicCounter(const IntegerCounter value = 0) noexcept
4848
{
49-
this->store(value, std::memory_order_release);
49+
this->store(value, std::memory_order_relaxed);
5050
}
5151
AtomicCounter(const AtomicCounter& obj) noexcept
5252
{
53-
const auto value = obj.load(std::memory_order_acquire);
54-
this->store(value, std::memory_order_release);
53+
const auto value = obj.load(std::memory_order_relaxed);
54+
this->store(value, std::memory_order_relaxed);
5555
}
5656
};
5757

0 commit comments

Comments
 (0)