Esempio n. 1
0
 public void ReleaseGenerator(CustomChunkGenerator gen)
 {
     lock (queueLock)
     {
         pool.Enqueue(gen);
     }
 }
Esempio n. 2
0
 public ChunkGeneratorPool(int maxGenerators, long seed)
 {
     for (int i = 0; i < maxGenerators; ++i)
     {
         CustomChunkGenerator gen = new CustomChunkGenerator();
         gen.Init(seed);
         pool.Enqueue(gen);
     }
 }
Esempio n. 3
0
        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();
        }