Example #1
0
        private void InitializeBucket(int bucketId, PoolManager poolManager, bool growable)
        {
            var arrayLength = BucketingUtil.GetLength(bucketId);
            var options     = GetArrayPoolingOptions(arrayLength, growable);

            _buckets[bucketId] = new ArrayOjectPool <T>(poolManager, options, growable);
        }
Example #2
0
        public override void Return(T[] array)
        {
            var length   = array.Length;
            var bucketId = BucketingUtil.GetBucket(length);

            if (!BucketingUtil.IsValidLength(bucketId, length))
            {
                throw new ArgumentException("Provided array does not belong to the pool.", nameof(array));
            }

            _buckets[bucketId].Return(array);
        }
Example #3
0
        public override T[] Rent(int length, bool clean = false)
        {
            var array = _buckets[BucketingUtil.GetBucket(length)].RentArray(clean);

            return(array);
        }