/// <summary> /// 把大字节数组分割成指定容量等级的ByteListStream /// </summary> /// <param name="largeBuf"></param> /// <param name="level"></param> /// <returns></returns> public static ByteListStream Slice(byte[] largeBuf, ByteListPool.BufferLevel level) { ByteListStream bs = new ByteListStream(); int countleave = largeBuf.Length; int offset = 0; while (countleave > 0) { byte[] buf = AllocBuf(level); int len = Math.Min(countleave, buf.Length); Buffer.BlockCopy(largeBuf, offset, buf, 0, len); bs.Add(new ArraySegment <byte>(buf, 0, len)); offset += len; countleave -= len; } return(bs); }
///// <summary> ///// 默认缓存容量是80M,设置缓存容量倍数 设置为2则缓存容量是160M ///// </summary> ///// <param name="multiple">倍数必须大于0</param> //public static void SetCacheMultipleAll(byte multiple) { // BufPool.SetCacheMultipleAll(multiple); //} /// <summary> /// 设置指定缓存容量的 缓存倍数,如果编写程序中命中的缓存级别较大,可单独增加缓存数量 /// </summary> /// <param name="level"></param> /// <param name="multiple"></param> public static void SetCacheMultiple(ByteListPool.BufferLevel level, byte multiple) { BufPool.SetCacheMultiple(level, multiple); }
/// <summary> /// 线程安全 /// </summary> /// <param name="level"></param> /// <returns></returns> public static byte[] AllocBuf(ByteListPool.BufferLevel level) { lock (m_lockObj) { return(BufPool.GetBuf(level)); } }