using System.Collections.Concurrent; namespace Nerfed.Runtime.Graphics; internal class FencePool { private GraphicsDevice GraphicsDevice; private ConcurrentQueue Fences = new ConcurrentQueue(); public FencePool(GraphicsDevice graphicsDevice) { GraphicsDevice = graphicsDevice; } public Fence Obtain() { if (Fences.TryDequeue(out Fence fence)) { return fence; } else { return new Fence(GraphicsDevice); } } public void Return(Fence fence) { Fences.Enqueue(fence); } }