对象池
1 一个基本的实现初始化和重置功能的对象池
public sealed class ObjectPool<T>
where T : class, new()
{
private Queue<T> m_objectQueue;
private Action<T> m_resetAction;
private Action<T> m_onetimeInitAction;
public ObjectPool(int initialBufferSize,
Action<T> ResetAction = null,
Action<T> OnetimeInitAction = null) {
m_objectQueue = new Queue<T>(initialBufferSize);
m_resetAction = ResetAction;
m_onetimeInitAction = OnetimeInitAction;
}
public T New() {
if (m_objectQueue.Count > 0) {
var t = m_objectQueue.Dequeue();
m_resetAction?.Invoke(t);
return t;
} else {
var t = new T();
m_onetimeInitAction?.Invoke(t);
return t;
}
}
public void Store(T obj) {
m_objectQueue.Enqueue(obj);
}
}2 被管理类型自重置的池
3 使用 Dictionary 和 List 实现的对象池
Last updated