Game Framework 设计思想研究(一) ReferencePool(引用池)

本文探讨了游戏框架中的引用池设计,包括ReferencePool和ReferenceCollection的概念。通过引用池,可以避免对象频繁构造带来的开销,提高性能。ReferenceCollection通过队列管理IReference接口实现的对象,获取和释放引用时进行引用计数操作。ReferencePool根据引用类型从集合中获取或创建新的引用集合,确保资源有效利用。
摘要由CSDN通过智能技术生成

引用池,简单来说就是有一个引用的集合。 避免重复开销。

如果之前了解过对象池,引用池的概念是类似的。

在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 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值