From 2e126cb99fa94c842dc08b409047dc5eda64704c Mon Sep 17 00:00:00 2001 From: Pavel Nadein Date: Mon, 22 Aug 2022 11:22:22 +0200 Subject: [PATCH] [SPSCQueue] limit the idx value When the reader/writed index pointer is increased, limit the value to the maximum queue size making a queue circular. Signed-off-by: Pavel Nadein --- SPSCQueue.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SPSCQueue.h b/SPSCQueue.h index 2c700db..2eeab36 100644 --- a/SPSCQueue.h +++ b/SPSCQueue.h @@ -42,7 +42,7 @@ class SPSCQueue } void push() { - ((std::atomic*)&write_idx)->store(write_idx + 1, std::memory_order_release); + ((std::atomic*)&write_idx)->store((write_idx + 1) % CNT, std::memory_order_release); } template @@ -68,7 +68,7 @@ class SPSCQueue } void pop() { - ((std::atomic*)&read_idx)->store(read_idx + 1, std::memory_order_release); + ((std::atomic*)&read_idx)->store((read_idx + 1) % CNT, std::memory_order_release); } template