Ejemplo n.º 1
0
        public ObjectPool(Func <T> instantiationFunc, int capacity = 16, ObjectPoolIsFullPolicy isFullPolicy = ObjectPoolIsFullPolicy.ReturnNull)
        {
            _instantiationFunction = instantiationFunc ?? throw new ArgumentNullException(nameof(instantiationFunc));
            _returnToPoolDelegate  = Return;

            _freeItems   = new Deque <T>(capacity);
            IsFullPolicy = isFullPolicy;
        }
Ejemplo n.º 2
0
        public ObjectPool(Func <T> instantiationFunc, int capacity = 16, ObjectPoolIsFullPolicy isFullPolicy = ObjectPoolIsFullPolicy.ReturnNull)
        {
            if (instantiationFunc == null)
            {
                throw new ArgumentNullException(nameof(instantiationFunc));
            }
            _returnToPoolDelegate  = Return;
            _instantiationFunction = instantiationFunc;
            _freeItems             = new Deque <T>(capacity);
            IsFullPolicy           = isFullPolicy;

            //while (_freeItems.Count < capacity)
            //{
            //    Capacity++;
            //    _freeItems.AddToBack(CreateObject());
            //}
        }
Ejemplo n.º 3
0
        private void CreateComponentPool(EntityComponentType componentType, int initialSize, ObjectPoolIsFullPolicy isFullPolicy)
        {
            Debug.Assert(componentType != null);
            Debug.Assert(initialSize > 0);
            Debug.Assert(!_componentPoolsByComponentTypeIndex.ContainsKey(componentType.Index));

            var poolType      = typeof(ComponentPool <>).MakeGenericType(componentType.Type);
            var componentPool = (IComponentPool)_dependencyResolver.Resolve(poolType, initialSize, isFullPolicy);

            _componentPoolsByComponentTypeIndex.Add(componentType.Index, componentPool);
        }
 public ComponentPool(int intitialSize = 16, ObjectPoolIsFullPolicy isFullPolicy = ObjectPoolIsFullPolicy.ReturnNull)
     : base(CreateObject, intitialSize, isFullPolicy)
 {
 }