Skip to content

Commit b8f57b9

Browse files
Fix memory order issues.
1 parent 0405ab0 commit b8f57b9

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

WaitFreeRingBufferUtilities/Include/ring-buffer-base.inl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,9 @@ public:
157157
bool expected_is_pusher_processing = false;
158158
if (std::atomic_compare_exchange_strong(&BaseType::elements[element_index].is_pusher_processing, &expected_is_pusher_processing, true))
159159
{
160-
if (BaseType::elements[element_index].value_ptr.load(std::memory_order_relaxed))
160+
if (BaseType::elements[element_index].value_ptr.load(std::memory_order_acquire))
161161
{
162-
BaseType::elements[element_index].is_pusher_processing.store(false, std::memory_order_release);
162+
BaseType::elements[element_index].is_pusher_processing.store(false, std::memory_order_relaxed);
163163
continue;
164164
}
165165

@@ -199,10 +199,10 @@ public:
199199
bool expected_is_popper_processing = false;
200200
if (std::atomic_compare_exchange_strong(&BaseType::elements[element_index].is_popper_processing, &expected_is_popper_processing, true))
201201
{
202-
const auto value_ptr = BaseType::elements[element_index].value_ptr.load(std::memory_order_relaxed);
202+
const auto value_ptr = BaseType::elements[element_index].value_ptr.load(std::memory_order_acquire);
203203
if (!value_ptr)
204204
{
205-
BaseType::elements[element_index].is_popper_processing.store(false, std::memory_order_release);
205+
BaseType::elements[element_index].is_popper_processing.store(false, std::memory_order_relaxed);
206206
continue;
207207
}
208208

0 commit comments

Comments
 (0)