public virtual ObjectCacheBase Acquire() { if (CircleCaches.Count == 0) { // 生产太多,会多创建空壳。后面从缓存中选取,可能是空壳,进一步需要初始化 Generator(1); } var itr = CircleCaches.Values.GetEnumerator(); itr.MoveNext(); ObjectCacheBase circle = itr.Current; circle.Acquired(); CircleCaches.Remove(circle.Key); return(circle); }
public virtual void Acquire(int num, List <ObjectCacheBase> result) { if (CircleCaches.Count < num) { Generator(num - CircleCaches.Count); } var itr = CircleCaches.Values.GetEnumerator(); while (itr.MoveNext() && result.Count < num) { ObjectCacheBase circle = itr.Current; circle.Acquired(); result.Add(circle); } for (int i = 0; i < num; ++i) { CircleCaches.Remove(result[i].Key); } }