using System.Collections.Concurrent; using System.Collections.Generic; namespace Server.Core { public class ListPool { private readonly Queue> Queues = new Queue>(); public List Get() { if (Queues.Count > 0) { return Queues.Dequeue(); } return new List(); } public void Recycle(List list) { list.Clear(); Queues.Enqueue(list); } } public class ConcurrentListPool { private readonly ConcurrentQueue> Queues = new ConcurrentQueue>(); public List Get() { if (Queues.TryDequeue(out var list)) { return list; } return new List(); } public void Recycle(List list) { list.Clear(); Queues.Enqueue(list); } } }