/* vim:set ts=2 sw=2 sts=2 et: */
/**
* \author Marcus Holland-Moritz (github@mhxnet.de)
* \copyright Copyright (c) Marcus Holland-Moritz
*
* This file is part of dwarfs.
*
* dwarfs is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* dwarfs is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with dwarfs. If not, see .
*/
#include
#include
namespace dwarfs {
thread_pool::thread_pool() = default;
thread_pool::~thread_pool() = default;
thread_pool::thread_pool(logger& lgr, os_access const& os,
const char* group_name, size_t num_workers,
size_t max_queue_len, int niceness)
: wg_{std::make_unique(
lgr, os, group_name, num_workers, max_queue_len, niceness)} {}
bool thread_pool::add_job(job_type job) { return wg_->add_job(std::move(job)); }
void thread_pool::stop() { wg_->stop(); }
void thread_pool::wait() { wg_->wait(); }
bool thread_pool::running() const { return wg_->running(); }
std::chrono::nanoseconds thread_pool::get_cpu_time(std::error_code& ec) const {
return wg_->get_cpu_time(ec);
}
std::chrono::nanoseconds thread_pool::get_cpu_time() const {
std::error_code ec;
auto rv = get_cpu_time(ec);
if (ec) {
throw std::system_error(ec);
}
return rv;
}
std::optional thread_pool::try_get_cpu_time() const {
return wg_->try_get_cpu_time();
}
} // namespace dwarfs