示例#1
0
	/** 
		创建一个对象。 如果缓冲里已经创建则返回现有的,否则
		创建一个新的。
	*/
	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;
	}
示例#2
0
	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;
	}