also includes the fix for parallel animation evaluation to work correctly with task retraction that is globally enabled by these change. animation fix was reviewed by evgenii.babinets
#rb francis.hurteau, danny.couture
#preflight 6268163bdd35c0d6cab2c267
[CL 19924083 by Andriy Tylychko in ue5-main branch]
* tasks store task body by value in place
* pooled task allocation
* FTaskEvent doesn't have a body and is not executed
* basic waiting for a task (w/o timeout) allocates the waiting task on the stack
* optimised internal atomic state and task retraction
#rb francis.hurteau
#preflight https://horde.devtools.epicgames.com/job/625e84b0d412434587e1b740
[CL 19805905 by Andriy Tylychko in ue5-main branch]
A nested task is a task that must be completed before its parent task is completed, w/o blocking a worker that executes the parent task. It's an analog to `DontCompleteUntil` feature of the old TaskGraph
#rb Francis.Hurteau Danny.Couture
[CL 17014883 by Andriy Tylychko in ue5-main branch]
* an ability to specify task prerequisites, either TTask or FTaskEvent
* redesigned FTaskEvent so it can be used as a prerequisite
* a helper function `Tasks::Prerequisites()` to specify multiple prerequisites
* added `Tasks::Wait()` function to wait for multiple tasks
* unit- and perf-tests
#rb danny.couture
[CL 16333765 by Andriy Tylychko in ue5-main branch]
Pipe is a chain of tasks that are executed one after another and so can be used for synchronised access to a shared resource. Should be used instead of dedicated threads as much as possible.
#rb steve.robb arne.schober
[CL 15700278 by Andriy Tylychko in ue5-main branch]