对象池模式

C ++ Telltales第7部分:

这是我的C ++ Telltales系列的第七部分,我在其中分享了一些使用C ++的技巧。 请随时在 这里查看 该系列的其他部分

如果需要使用大量寿命很短的对象,尤其是初始化或销毁这些对象的成本很高时,则对象池很有用。 它们用于提供对可重用对象的访问,这些可重用对象是在请求时动态创建的或在对象池初始化时创建的-使用哪种方法取决于您计划使用对象池的方式。

对象池在某些情况下可以大大提高性能,并且经常用于例如图形粒子系统,存储大的位图和字体以及用于套接字连接。 这是利用C ++ 14的对象池的示例实现。 它允许使用一定数量的对象初始化池,设置池中的最大对象数量,还可以利用C ++参数包为新创建的对象传递构造参数。 因此,让我们看一下:

它很可能不是完美的解决方案,但提供了有关如何执行对象池的想法。 该示例使用std :: unique_ptr自定义删除程序,在调用上下文完成使用该对象后,将该对象返回到池中。 它要求使用重置功能将对象重置为原始状态,以便在再次使用同一对象实例时,将设置所有成员变量,就像设置一个全新实例一样。

另请注意,该示例根本不是线程安全的,因此无法从多个线程调用该示例。 您只需将互斥量添加到要修改堆栈的位置即可轻松实现线程安全。 您可能希望使对象池成为单例或Mapleton,以便轻松地从多个上下文访问它。

随意使用此片段作为您自己的对象池实现的基础,乐于助人!

如果您喜欢这个故事,请按下面的❤按钮(您知道可以鼓掌不止一次)。 也请随时分享这个故事!

关于我

我是Heikki Hellgren,是Elektrobit Automotive的软件专家和技术爱好者。 我的兴趣是软件构建,工具,自动测试以及AI和自动驾驶等所有新奇事物。 您可以在MediumTwitter上关注我,并查看我的网站以获取更多信息。

From: https://hackernoon.com/the-object-pool-pattern-e424507b996a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值