- Restore WaitGroup abstraction
- Simplify WaitGroup to make proper use of atomics
- Fix logic error in ParallelTaskExecutor causing task counter to go
below zero when executing main thread tasks
- Use ConcurrentHashMap in models to allow parallel access
- Reduce chunk size in RunOnAllPlan
- Only queue in InstanceManager
- Defer syncPoint within renderStage
- AbstractStorage return immutable view for tickable/dynamic instances
- Process InstanceManager queues off-thread
- Engines/InstanceManagers now provide Plans for frames/ticks
- TODO: batching is broken
- TODO: plan caching
- Add Plan interface which can be used to compose complex systems
of parallel execution
- Add Synchronizer to facilitate barriering
- Remove WorkGroup
- Summary of different primitives below, names need work :ioa:
- BarrierPlan: executes one plan then another
- NestedPlan: executes many plans at once
- OnMainThreadPlan: waits for a syncPoint to execute
- RunOnAllPlan: dispatches work over a Supplier<List>
- SimplePlan: executes many Runnables at once
- UnitPlan: does nothing