From 42501ec7c27e98c7a447b625f2cee425913e85ca Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sun, 8 Nov 2020 16:12:42 +0300 Subject: [PATCH] Add threadpool::queue_size() and synchronyzed_queue::size() --- libs/util/include/psemek/util/synchronyzed_queue.hpp | 11 ++++++++++- libs/util/include/psemek/util/threadpool.hpp | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/libs/util/include/psemek/util/synchronyzed_queue.hpp b/libs/util/include/psemek/util/synchronyzed_queue.hpp index 5cef8d4b..8a10c036 100644 --- a/libs/util/include/psemek/util/synchronyzed_queue.hpp +++ b/libs/util/include/psemek/util/synchronyzed_queue.hpp @@ -40,8 +40,10 @@ namespace psemek::util // e.g. when no new items are going to be pushed void wait(); + std::size_t size() const; + private: - std::mutex mutex; + mutable std::mutex mutex; std::condition_variable push_cv, pop_cv; std::deque queue; std::size_t const max_size_; @@ -144,4 +146,11 @@ namespace psemek::util push_cv.wait(lock, [this]{ return queue.empty(); }); } + template + std::size_t synchronized_queue::size() const + { + std::lock_guard lock{mutex}; + return queue.size(); + } + } diff --git a/libs/util/include/psemek/util/threadpool.hpp b/libs/util/include/psemek/util/threadpool.hpp index cb9cdd33..8d6d9e34 100644 --- a/libs/util/include/psemek/util/threadpool.hpp +++ b/libs/util/include/psemek/util/threadpool.hpp @@ -57,6 +57,8 @@ namespace psemek::util working_count_cv_.wait(lock, [this]{ return working_count_ == 0; }); } + std::size_t queue_size() const { return tasks_queue.size(); } + private: std::string const name; std::vector threads;