public ChunkGenerator(float updateTime, Godot.OpenSimplexNoise noise) { Noise = noise; Timer = new ETimer(updateTime, true, true, UpdateQueue); ResetEvents = new AutoResetEvent[Environment.ProcessorCount / 2]; GenerationThreads = new Thread[Environment.ProcessorCount / 2]; IsFree = new bool[Environment.ProcessorCount / 2]; for (int i = 0; i < ResetEvents.Length; i++) { ResetEvents[i] = new AutoResetEvent(false); } for (int i = 0; i < IsFree.Length; i++) { IsFree[i] = true; } for (int i = 0; i < GenerationThreads.Length; i++) { GenerationThreads[i] = new Thread(GenerationChunk); GenerationThreads[i].Name = $"{i}"; GenerationThreads[i].Start(); } Timer.Start(); }