diff options
| author | Jeroen van Rijn <Kelimion@users.noreply.github.com> | 2021-08-23 11:17:54 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-23 11:17:54 +0200 |
| commit | 7f34080b69b1bf0cf00606ec19e4e8bbc1701e69 (patch) | |
| tree | 9ed8b16ff47d3edbac24eb4895c24c6a88cffabc | |
| parent | 7a00ef1879719a6304a80eff7febae93273d862c (diff) | |
| parent | 9397555c9195776d2aa3c9346d08fd6b631f73ba (diff) | |
Merge pull request #1097 from nakst/master
Thread pool: create threads in thread_pool_wait
| -rw-r--r-- | src/thread_pool.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/thread_pool.cpp b/src/thread_pool.cpp index 54d6cd72c..e904a2e29 100644 --- a/src/thread_pool.cpp +++ b/src/thread_pool.cpp @@ -13,6 +13,7 @@ struct ThreadPool { std::atomic<isize> outstanding_task_count; WorkerTask *volatile next_task; BlockingMutex task_list_mutex; + isize thread_count; }; void thread_pool_thread_entry(ThreadPool *pool) { @@ -62,10 +63,7 @@ void thread_pool_init(ThreadPool *pool, gbAllocator const &a, isize thread_count memset(pool, 0, sizeof(ThreadPool)); mutex_init(&pool->task_list_mutex); pool->outstanding_task_count.store(1); - - for (int i = 0; i < thread_count; i++) { - thread_pool_start_thread(pool); - } + pool->thread_count = thread_count; } void thread_pool_destroy(ThreadPool *pool) { @@ -73,6 +71,10 @@ void thread_pool_destroy(ThreadPool *pool) { } void thread_pool_wait(ThreadPool *pool) { + for (int i = 0; i < pool->thread_count; i++) { + thread_pool_start_thread(pool); + } + pool->outstanding_task_count.fetch_sub(1); thread_pool_thread_entry(pool); } |