using System.Collections.Generic; using System.Runtime.CompilerServices; namespace UnityAsync { public partial class AsyncManager { partial class ContinuationProcessorGroup { const int InitialCapacity = 1 << 10; interface IContinuationProcessor { void Process(); } readonly List processors; public ContinuationProcessorGroup() { processors = new List(16); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Add(in T cont) where T : IAwaitInstructionAwaiter { var p = ContinuationProcessor.instance; if(p == null) { p = ContinuationProcessor.instance = new ContinuationProcessor(InitialCapacity); processors.Add(ContinuationProcessor.instance); } p.Add(cont); } public void Process() { for(int i = 0; i < processors.Count; ++i) processors[i].Process(); } } } }