tpool - misc fixes

This commit is contained in:
Vladislav Vaintroub 2020-01-12 21:34:24 +01:00
parent c27577a1ad
commit 508bc20a85
2 changed files with 7 additions and 6 deletions

View file

@ -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<std::mutex> 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();
}

View file

@ -1,5 +1,7 @@
#include <tpool.h>
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();
}
}
}