From 9c89501a2ac8b3d1a362810170d434504560b149 Mon Sep 17 00:00:00 2001 From: Raphael Steiner Date: Thu, 5 Mar 2026 14:58:36 +0100 Subject: [PATCH 1/5] progress --- .../ParallelPriotityQueue/SpapQueueWorker.hpp | 104 +++++++++++++----- 1 file changed, 76 insertions(+), 28 deletions(-) diff --git a/include/ParallelPriotityQueue/SpapQueueWorker.hpp b/include/ParallelPriotityQueue/SpapQueueWorker.hpp index 0dd0212..c02ddac 100644 --- a/include/ParallelPriotityQueue/SpapQueueWorker.hpp +++ b/include/ParallelPriotityQueue/SpapQueueWorker.hpp @@ -59,8 +59,8 @@ class WorkerResource { const std::size_t workerId_; ///< Worker Id in the global queue. std::size_t localCount_{0U}; ///< A partial account of the number of tasks in the global queue. GlobalQType &globalQueue_; ///< Reference to the global queue. - typename std::array::iterator - bufferPointer_; ///< Pointer to the next free spot in the outBuffer_. + std::size_t bufferHead_{0U}; ///< Head of out ring buffer + std::size_t bufferTail_{0U}; ///< Tail of out ring buffer typename std::array()>::const_iterator channelPointer_; ///< Pointer to the next outgoing channel. const typename std::array()>::const_iterator @@ -75,8 +75,7 @@ class WorkerResource { inline void decrGlobalCount() noexcept; [[nodiscard("Push may fail when channel is full.\n")]] inline bool pushOutBuffer() noexcept; - inline void pushOutBufferSelf( - const typename std::array::iterator fromPointer) noexcept; + inline void pushOutBufferSelf(const std::size_t numElements) noexcept; inline void enqueueInChannels() noexcept; virtual void processElement(const value_type val) noexcept = 0; @@ -121,7 +120,10 @@ class WorkerResource { * @see SpapQueue * @see WorkerResource */ -template