From 7fef56b479482d17579ad712361a44b8310160d3 Mon Sep 17 00:00:00 2001 From: Yang Liming Date: Tue, 20 Aug 2024 19:37:01 +0800 Subject: [PATCH] fix mpsc queue cur enqueue node to atomic exhange --- src/butil/containers/mpsc_queue.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/butil/containers/mpsc_queue.h b/src/butil/containers/mpsc_queue.h index f9e1d78099..6db50f285c 100644 --- a/src/butil/containers/mpsc_queue.h +++ b/src/butil/containers/mpsc_queue.h @@ -129,13 +129,12 @@ bool MPSCQueue::DequeueImpl(T* data) { if (_cur_dequeue_node) { node = _cur_dequeue_node; } else { - node = _cur_enqueue_node.load(memory_order_relaxed); + node = _cur_enqueue_node.exchange(NULL, memory_order_relaxed); } if (!node) { return false; } - _cur_enqueue_node.store(NULL, memory_order_relaxed); if (data) { auto mem = (T* const)node->data_mem; *data = std::move(*mem);