对象池在编程中,我们经常会涉及到对象操作,频繁的操作方式如下图所示:创建对象->使用对象->销毁对象。而且这个对象在创建的时候可能需要构建很多资源,消耗很大。比如hiredisSDK中每次都会创建一个redisContext。如需查询,必须先连接网络。如果一直是上图的工作方式,会频繁创建连接,查询完成后会释放连接。重新建立连接,降低网络的查询效率。这时候可以建立一个对象池来重用这个对象,一般要做到线程安全:从对象池中获取一个对象,如果没有对象就创建一个,对象被使用后返回对象used,returntheobject如果对象池满足以下条件,应该适合使用对象池技术:有些对象虽然创建起来代价高昂,但可能无法重用。要使用对象池必须保证对象可以被重用。在构造这个对象的时候,有一些耗时的资源是可以重用的。比如redisContext的网络连接。或者如果对象的频繁申请和释放会带来一些其他的资源占用问题,比如内存碎片。重用可以提高程序的效率。对象池的数量应该控制在可接受的范围内,不会无限扩大。对象池的实现首先介绍程序的示例对象Object,它接受一个初始化参数strInit。classObject{public:Object(std::stringstrInit):m_strInit(strInit){std::cout<<"Object()"<GetObject(std::stringstrInit){std::shared_ptr