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;