23 _workers.reserve(numThreads);
24 for (
unsigned i = 0; i < numThreads; ++i)
26 _workers.emplace_back(
33 std::unique_lock lock(_queue_mutex);
34 _condition.wait(lock, [
this] {
return _stop || !_tasks.empty(); });
35 if (_stop && _tasks.empty())
39 task = std::move(_tasks.front());
46 catch (
const std::exception& e)
52 std::unique_lock lock(_queue_mutex);
54 if (_pending_tasks == 0)
56 _done_condition.notify_all();