diff --git a/tpool/tpool_generic.cc b/tpool/tpool_generic.cc index 715b75aa3c9..512495e6bdb 100644 --- a/tpool/tpool_generic.cc +++ b/tpool/tpool_generic.cc @@ -742,17 +742,14 @@ void thread_pool_generic::submit_task(task* task) /* Notify thread pool that current thread is going to wait */ void thread_pool_generic::wait_begin() { - if (!tls_worker_data || tls_worker_data->is_long_task() || tls_worker_data->is_waiting()) + if (!tls_worker_data || tls_worker_data->is_long_task()) return; std::unique_lock lk(m_mtx); tls_worker_data->m_state |= worker_data::WAITING; m_waiting_task_count++; /* Maintain concurrency */ - if (m_task_queue.empty()) - return; - if (m_active_threads.size() - m_long_tasks_count - m_waiting_task_count < m_concurrency) - maybe_wake_or_create_thread(); + maybe_wake_or_create_thread(); } diff --git a/tpool/wait_notification.cc b/tpool/wait_notification.cc index d158d29c690..7743e2db7bc 100644 --- a/tpool/wait_notification.cc +++ b/tpool/wait_notification.cc @@ -1,5 +1,7 @@ #include +namespace tpool +{ static thread_local tpool::thread_pool* tls_thread_pool; extern "C" void set_tls_pool(tpool::thread_pool* pool) @@ -18,4 +20,6 @@ extern "C" void tpool_wait_end() { if (tls_thread_pool) tls_thread_pool->wait_end(); -} \ No newline at end of file +} + +}