using Misaki.HighPerformance.Jobs; using Misaki.HighPerformance.LowLevel.Collections; namespace Misaki.HighPerformance.Test.Jobs; internal struct JobDispatchingJob : IJobParallelFor { public UnsafeArray> data; public UnsafeList.ParallelWriter handles; private struct InnerJob : IJobParallelFor { public UnsafeArray data; public void Execute(int loopIndex, ref readonly JobExecutionContext ctx) { ref var value = ref data[loopIndex]; value *= 2; } } public void Execute(int loopIndex, ref readonly JobExecutionContext ctx) { if (loopIndex % 2 == 0) { var innerJob = new InnerJob { data = data[loopIndex] }; var handle = ctx.JobScheduler.ScheduleParallelFor(in innerJob, data[loopIndex].Length, 64, ctx.ThreadIndex); handles.AddNoResize(handle); } } }