[Bf-blender-cvs] [5fe87a0a8c7] master: Task scheduler: Use single thread branch when range fits into single chunk

Sergey Sharybin noreply at git.blender.org
Tue Jan 9 18:18:36 CET 2018


Commit: 5fe87a0a8c7d9be3b913d9e8e0decb314cf5301d
Author: Sergey Sharybin
Date:   Tue Jan 9 18:10:47 2018 +0100
Branches: master
https://developer.blender.org/rB5fe87a0a8c7d9be3b913d9e8e0decb314cf5301d

Task scheduler: Use single thread branch when range fits into single chunk

===================================================================

M	source/blender/blenlib/intern/task.c

===================================================================

diff --git a/source/blender/blenlib/intern/task.c b/source/blender/blenlib/intern/task.c
index c82d2298a36..29daac1ae48 100644
--- a/source/blender/blenlib/intern/task.c
+++ b/source/blender/blenlib/intern/task.c
@@ -1097,7 +1097,6 @@ void BLI_task_parallel_range(const int start, const int stop,
 	}
 
 	task_scheduler = BLI_task_scheduler_get();
-	task_pool = BLI_task_pool_create_suspended(task_scheduler, &state);
 	num_threads = BLI_task_scheduler_num_threads(task_scheduler);
 
 	/* The idea here is to prevent creating task for each of the loop iterations
@@ -1126,9 +1125,15 @@ void BLI_task_parallel_range(const int start, const int stop,
 	num_tasks = min_ii(num_tasks,
 	                   max_ii(1, (stop - start) / state.chunk_size));
 
-	/* TODO(sergey): If number of tasks happened to be 1, use single threaded
-	 * path.
-	 */
+	if (num_tasks == 1) {
+		palallel_range_single_thread(start, stop,
+		                             userdata,
+		                             func,
+		                             settings);
+		return;
+	}
+
+	task_pool = BLI_task_pool_create_suspended(task_scheduler, &state);
 
 	/* NOTE: This way we are adding a memory barrier and ensure all worker
 	 * threads can read and modify the value, without any locks. */



More information about the Bf-blender-cvs mailing list