Browse Source

Simplify `thread_pool_wait_to_process`

gingerBill 4 years ago
parent
commit
8a6b743d2a
1 changed files with 7 additions and 0 deletions
  1. 7 0
      src/thread_pool.cpp

+ 7 - 0
src/thread_pool.cpp

@@ -124,6 +124,13 @@ void thread_pool_do_work(ThreadPool *pool, WorkerTask *task) {
 }
 }
 
 
 void thread_pool_wait_to_process(ThreadPool *pool) {
 void thread_pool_wait_to_process(ThreadPool *pool) {
+	if (pool->thread_count == 0) {
+		WorkerTask task = {};
+		while (thread_pool_try_and_pop_task(pool, &task)) {
+			thread_pool_do_work(pool, &task);
+		}
+		return;
+	}
 	while (pool->tasks.count.load(std::memory_order_relaxed) > 0 || gb_atomic32_load(&pool->processing_work_count) != 0) {
 	while (pool->tasks.count.load(std::memory_order_relaxed) > 0 || gb_atomic32_load(&pool->processing_work_count) != 0) {
 		WorkerTask task = {};
 		WorkerTask task = {};
 		if (thread_pool_try_and_pop_task(pool, &task)) {
 		if (thread_pool_try_and_pop_task(pool, &task)) {