引用池,简单来说就是有一个引用的集合。 避免重复开销。
如果之前了解过对象池,引用池的概念是类似的。
在GF里
1 * ReferencePool = N * ReferenceCollection。
1 * ReferenceCollection = N * IReference。
ReferenceCollection 引用集合
private readonly Queue<IReference> m_References;
引用集合里通过一个队列维护所有引用对象, 引用对象需要实现 IReference 接口。
每次获取引用对象时:
使用引用计数+1,获取引用计数+1。
如果引用队列中存在引用则弹出引用,如不存在 添加引用计数+1,返回一个新引用。
释放引用对象时:
首先将引用数据清除,然后将引用压入队列。
释放引用计数+1,使用引用计数-1。
Add方法():
可以一次性创建多个引用,放入队列中。初始化引用集合大小。
Remove方法():
移除多个引用。
ReferencePool 引用池
private static