public SessionPool(int capacity) { // // 为了保证效率,不将_pools分配满,仅保留少于一半的对象作为空槽使用 IICAssert.IsTrue(capacity < 1024 * 1024); _capacity = capacity; _capacityMask = NumberUtils.NextPower2(capacity) * 2; _pools = new object[_capacityMask]; _capacityMask = _capacityMask - 1; }
/// <summary> /// 构造函数, 创建一个线程安全,顺序返回0..n-1的循环计数器 /// </summary> /// <param name="n">上限</param> public LoopCounter(int n) { if (n > 10000) { throw new NotSupportedException("Only support n <= 10000"); } if (n == 0) { throw new NotSupportedException("Bad parameter n == 0"); } // // _n = n; _mask = NumberUtils.NextPower2(n * 40000) - 1; _i = 0; }