/** 创建一个对象。 如果缓冲里已经创建则返回现有的,否则 创建一个新的。 */ T* createObject(void) { mutex_.lockMutex(); while(true) { if(objects_.size() > 0) { T* t = static_cast<T*>(*objects_.begin()); objects_.pop_front(); // 先重置状态 t->onReclaimObject(); mutex_.unlockMutex(); return t; } assignObjs(); } mutex_.unlockMutex(); return NULL; }
T* createObject(void) { mutex_.lockMutex(); while(true) { if(obj_count_ > 0) { T* t = static_cast<T1*>(*objects_.begin()); objects_.pop_front(); --obj_count_; mutex_.unlockMutex(); return t; } assignObjs(); } mutex_.unlockMutex(); return NULL; }