BLI_task: Add new 'BLI_task_parallel_range_finalize()'.
authorBastien Montagne <montagne29@wanadoo.fr>
Mon, 16 May 2016 15:15:18 +0000 (17:15 +0200)
committerBastien Montagne <montagne29@wanadoo.fr>
Mon, 16 May 2016 15:15:18 +0000 (17:15 +0200)
commit688858d3a807536d2bdcead7b50fc4d0496dab44
tree8304480488491a0f3cef72e731da32a7ad9ceac0
parent5a7429c36302b872b8de2eaec88984a9b98cc613
BLI_task: Add new 'BLI_task_parallel_range_finalize()'.

Together with the extended loop callback and userdata_chunk, this allows to perform
cumulative tasks (like aggregation) in a lockfree way using local userdata_chunk to store temp data,
and once all workers have finished, to merge those userdata_chunks in the finalize callback
(from calling thread, so no need to lock here either).

Note that this changes how userdata_chunk is handled (now fully from 'main' thread,
which means a given worker thread will always get the same userdata_chunk, without
being re-initialized anymore to init value at start of each iter chunk).
source/blender/blenlib/BLI_task.h
source/blender/blenlib/intern/task.c