首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Poco::ObjectPool与c++示例

Poco::ObjectPool与c++示例
EN

Stack Overflow用户
提问于 2016-03-04 12:20:25
回答 1查看 782关注 0票数 1

如何在我的Poco::ObjectPool程序中使用c++类?谁能用一个例子来描述这一点,因为我是第一次使用Poco库。在期待中感谢。

EN

回答 1

Stack Overflow用户

发布于 2016-03-04 13:47:15

这方面的文档非常清楚。实际上,下面我从医生那里扣除的,我自己从来没有用过Poco .但现在开始了。

假设您有一个class Foo。由于某些原因,您不希望每次需要时都创建一个新的。也许这是昂贵的创造。也许它会收集一些重要的资源。你想把它集中起来,从池中拿出一个物体,当你用完它的时候,把它放回池里。

您为Poco::ObjectPool对象创建了一个Foo,给出了它的起始容量(最初创建的对象数量)和峰值容量。

代码语言:javascript
复制
Poco::ObjectPool< Foo > pool( 10, 20 );

您现在可以从池中“借用”对象。注意,如果达到峰值容量,该函数可以返回nullptr

代码语言:javascript
复制
Foo * f = pool.borrowObject();

完成后,...and将返回到池中。

代码语言:javascript
复制
pool.returnObject( f );

您可以向ObjectPool提供策略类以自定义其行为,接口由PoolableObjectFactory定义。这个类处理如何创建、激活、验证对象(以检查它们是否可以被重用或需要被销毁)、禁用和销毁(如果它们不能被重用,或者池被销毁)。

代码语言:javascript
复制
struct FooFactory
{
    Foo * createObject() { return new Foo( 42 ); }
    void activateObject( Foo * p ) { p.init(); }
    bool validateObject( Foo * p ) { return true; }
    void deactivateObject( Foo * p ) { p.deinit(); }
    void destroyObject( Foo * p ) { delete p; }
};

Poco::ObjectPool< Foo, Foo *, FooFactory > pool;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35795928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档