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); }
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); }
public override T[] Rent(int length, bool clean = false) { var array = _buckets[BucketingUtil.GetBucket(length)].RentArray(clean); return(array); }