[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