From 6efd58dd3e2a6be696b00d68ad775d75def79b26 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 22 Dec 2017 16:37:25 +0100 Subject: Task scheduler: Clarify why do we need an atomic add of 0 --- source/blender/blenlib/intern/task.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source/blender/blenlib/intern/task.c') diff --git a/source/blender/blenlib/intern/task.c b/source/blender/blenlib/intern/task.c index 311be1dd151..afa20e3d766 100644 --- a/source/blender/blenlib/intern/task.c +++ b/source/blender/blenlib/intern/task.c @@ -1124,6 +1124,9 @@ static void task_parallel_range_ex( } num_tasks = min_ii(num_tasks, (stop - start) / state.chunk_size); + + /* NOTE: This way we are adding a memory barrier and ensure all worker + * threads can read and modify the value, without any locks. */ atomic_fetch_and_add_int32(&state.iter, 0); if (use_userdata_chunk) { -- cgit v1.2.3