和大部分实现方案一样,我需要限制池化数组的最大尺寸,同时设置最小长度为16。我们将[16-MaxLength]划分为N个区间,每个区间对应一个Bucket,该Bucket用来管理“所在长度区间”的字节数组。如下所示的就是这个Bucket类型的定义:我们利用一个
ConcurrentBag<byte[]>来维护池化的字节数组,数组的“借”与“还”由TryTake和Add方法来实现。