Exemplo n.º 1
0
        public SessionPool(int capacity)
        {
            //
            // 为了保证效率,不将_pools分配满,仅保留少于一半的对象作为空槽使用
            IICAssert.IsTrue(capacity < 1024 * 1024);
            _capacity     = capacity;
            _capacityMask = NumberUtils.NextPower2(capacity) * 2;

            _pools        = new object[_capacityMask];
            _capacityMask = _capacityMask - 1;
        }
Exemplo n.º 2
0
        /// <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;
        }