20 _workers.reserve(numThreads);
21 for (
unsigned i = 0; i < numThreads; ++i)
23 _workers.emplace_back(
30 std::unique_lock lock(_queue_mutex);
31 _condition.wait(lock, [
this] {
return _stop || !_tasks.empty(); });
32 if (_stop && _tasks.empty())
36 task = std::move(_tasks.front());
43 catch (
const std::exception& e)
49 std::unique_lock lock(_queue_mutex);
51 if (_pending_tasks == 0)
53 _done_condition.notify_all();