コード例 #1
0
ファイル: ObjectPools.cs プロジェクト: ByteKay/Nullspace
        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);
        }
コード例 #2
0
ファイル: ObjectPools.cs プロジェクト: ByteKay/Nullspace
        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);
            }
        }