diff --git a/headers/promise.hpp/jobber.hpp b/headers/promise.hpp/jobber.hpp index a398aca..615c00a 100644 --- a/headers/promise.hpp/jobber.hpp +++ b/headers/promise.hpp/jobber.hpp @@ -58,6 +58,10 @@ namespace jobber_hpp void resume() noexcept; bool is_paused() const noexcept; + std::size_t thread_count() const noexcept; + std::thread::id thread_id(std::size_t i) const; + std::vector thread_ids() const; + jobber_wait_status wait_all() const noexcept; active_wait_result_t active_wait_all() noexcept; active_wait_result_t active_wait_one() noexcept; @@ -189,6 +193,23 @@ namespace jobber_hpp return paused_; } + inline std::size_t jobber::thread_count() const noexcept { + return threads_.size(); + } + + inline std::thread::id jobber::thread_id(std::size_t i) const { + return threads_[i].get_id(); + } + + inline std::vector jobber::thread_ids() const { + std::vector ids; + ids.reserve(threads_.size()); + for ( const std::thread& t : threads_ ) { + ids.push_back(t.get_id()); + } + return ids; + } + inline jobber_wait_status jobber::wait_all() const noexcept { std::unique_lock lock(tasks_mutex_); cond_var_.wait(lock, [this](){