Files
plugin-library/Assets/04.AudioCore/RunTime/GenericPool.cs

45 lines
905 B
C#
Raw Normal View History

2025-03-06 17:24:31 +08:00
using System.Collections.Generic;
public class GenericPool<T> where T : new()
{
private Queue<T> _pool = new Queue<T>();
private int _maxSize;
public GenericPool(int initialSize, int maxSize)
{
_maxSize = maxSize;
for (int i = 0; i < initialSize; i++)
{
_pool.Enqueue(new T());
}
}
// <20>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public T Get()
{
if (_pool.Count > 0)
{
return _pool.Dequeue();
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD>򴴽<EFBFBD><F2B4B4BD><EFBFBD><C2B6><EFBFBD>
if (_pool.Count < _maxSize)
{
return new T();
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3><EFBFBD><ECB3A3>
return default(T);
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public void Return(T item)
{
if (item == null) return;
if (_pool.Count < _maxSize)
{
_pool.Enqueue(item);
}
}
}