extract jobber thread ids

This commit is contained in:
BlackMATov
2019-12-28 12:31:54 +07:00
parent 61a76715a8
commit b8114145b9

View File

@@ -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<std::thread::id> 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<std::thread::id> jobber::thread_ids() const {
std::vector<std::thread::id> 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<std::mutex> lock(tasks_mutex_);
cond_var_.wait(lock, [this](){