adding futures

This commit is contained in:
Ian Roddis
2021-06-16 10:51:38 -03:00
parent d871572d5e
commit 01517f3421

View File

@@ -3,6 +3,8 @@
using namespace daggy;
ThreadPool::ThreadPool(size_t nWorkers) {
shutdown_ = false;
std::lock_guard<std::mutex> lk(guard_);
for (size_t i = 0; i < nWorkers; ++i) {
workers_.emplace_back([&]() {
while (true) {
@@ -36,9 +38,11 @@ void ThreadPool::shutdown() {
}
std::future<void> ThreadPool::addTask(std::function<void()> fn) {
std::packaged_task<void()> task(fn);
std::future<void> result = task.get_future();
{
std::unique_lock<std::mutex> lk(guard_);
taskQueue_.push_back(fn);
taskQueue_.push_back(std::move(task));
}
cv_.notify_one();
}