public void ReleaseGenerator(CustomChunkGenerator gen) { lock (queueLock) { pool.Enqueue(gen); } }
public ChunkGeneratorPool(int maxGenerators, long seed) { for (int i = 0; i < maxGenerators; ++i) { CustomChunkGenerator gen = new CustomChunkGenerator(); gen.Init(seed); pool.Enqueue(gen); } }
public void ThreadCallback(object context) { CustomChunkGenerator chunkGen = genPool.GetGenerator(); for (int x = fromChunkX; x < toChunkX; ++x) { threadBody.Invoke(chunkGen, x); } genPool.ReleaseGenerator(chunkGen); ManualResetEvent finishEvent = (ManualResetEvent)context; finishEvent.Set(); }