From 3629f8762784e5db24551d301f12ca4b668ab701 Mon Sep 17 00:00:00 2001 From: yhirose Date: Tue, 6 Aug 2019 08:31:43 +0900 Subject: [PATCH] Fixed thread pool problem. --- httplib.h | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/httplib.h b/httplib.h index df31605..9c4276b 100644 --- a/httplib.h +++ b/httplib.h @@ -335,15 +335,18 @@ private: void operator()() { for (;;) { - std::unique_lock lock(pool_.mutex_); + std::function fn; + { + std::unique_lock lock(pool_.mutex_); - pool_.cond_.wait( - lock, [&] { return !pool_.jobs_.empty() || pool_.shutdown_; }); + pool_.cond_.wait( + lock, [&] { return !pool_.jobs_.empty() || pool_.shutdown_; }); - if (pool_.shutdown_) { break; } + if (pool_.shutdown_) { break; } - auto fn = pool_.jobs_.front(); - pool_.jobs_.pop_front(); + fn = pool_.jobs_.front(); + pool_.jobs_.pop_front(); + } assert(true == (bool)fn); fn();