From 0c16712c5f4ae59d454bc0f34ae2d90552bc98bb Mon Sep 17 00:00:00 2001 From: john30 Date: Sun, 19 Nov 2017 11:50:42 +0100 Subject: [PATCH] fix for repeated wait in Queue::remove, better variable naming --- src/lib/utils/queue.h | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) mode change 100644 => 100755 src/lib/utils/queue.h diff --git a/src/lib/utils/queue.h b/src/lib/utils/queue.h old mode 100644 new mode 100755 index ae6a15fd..c26e696f --- a/src/lib/utils/queue.h +++ b/src/lib/utils/queue.h @@ -109,27 +109,30 @@ class Queue { * @return whether the item was removed. */ bool remove(T item, bool wait = false) { - bool ret = false; + bool result = false; pthread_mutex_lock(&m_mutex); struct timespec t; - clockGettime(&t); - t.tv_sec++; // check thread death every second - do { + while (true) { + clockGettime(&t); + t.tv_sec++; // check thread death every second size_t oldSize = m_queue.size(); if (oldSize > 0) { m_queue.remove(item); if (m_queue.size() != oldSize) { - ret = true; + result = true; break; } } + if (!wait) { + break; + } int ret = pthread_cond_timedwait(&m_cond, &m_mutex, &t); if (ret != 0 && ret != ETIMEDOUT) { break; } - } while (wait); + } pthread_mutex_unlock(&m_mutex); - return ret; + return result; } /**