1
如何在我的C++程序中使用Poco::ObjectPool
類?任何人都可以請用一個例子來描述這個,因爲我第一次使用Poco庫。 感謝預期。Poco :: ObjectPool與C++示例
如何在我的C++程序中使用Poco::ObjectPool
類?任何人都可以請用一個例子來描述這個,因爲我第一次使用Poco庫。 感謝預期。Poco :: ObjectPool與C++示例
這個文件很清楚。實際上,我從文檔中扣除的所有內容,我從來沒有使用過Poco,但是在這裏。
讓我們假設你有一個class Foo
。出於某種原因,您不想在每次需要時創建一個新的。創建可能很昂貴。也許它組織了一些重要的資源。你想池它,從池中取一個對象,當你完成它時,把它放回池中。
您爲Foo
對象創建一個Poco::ObjectPool
,給出其起始容量(最初創建的對象數)和峯容量。
Poco::ObjectPool<Foo> pool(10, 20);
您現在可以從池中「借用」對象。請注意,如果達到峯值容量,該功能可以返回nullptr
。
Foo * f = pool.borrowObject();
...並在完成後將其返回到池。
pool.returnObject(f);
你可以提供一個策略類ObjectPool
來定製其行爲,該界面是由PoolableObjectFactory
定義。該類處理對象如何被創建,激活,驗證(以檢查它們是否可以重用或需要被銷燬),停用和銷燬(如果它們不能被重用,或者池被銷燬)。
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;