diff --git a/tpool/task_group.cc b/tpool/task_group.cc index ec9988ded6e..b52fe7c0f67 100644 --- a/tpool/task_group.cc +++ b/tpool/task_group.cc @@ -20,6 +20,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 - 1301 USA*/ #include #include #include +#ifndef _WIN32 +#include // usleep +#endif namespace tpool { task_group::task_group(unsigned int max_concurrency) : @@ -79,6 +82,18 @@ namespace tpool task_group::~task_group() { - assert(m_queue.empty() && !m_tasks_running); + std::unique_lock lk(m_mtx); + assert(m_queue.empty()); + + while (m_tasks_running) + { + lk.unlock(); +#ifndef _WIN32 + usleep(1000); +#else + Sleep(1); +#endif + lk.lock(); + } } }