Example #1
0
        public async Task ShouldFillUntilMaximumSize_Async(int maxSize)
        {
            var pool        = new ObjectPool <MyPooledObject>(maxSize);
            var objectCount = maxSize * 4;
            var objects     = new MyPooledObject[objectCount];

            Parallel.For(0, objectCount, i =>
            {
                objects[i] = pool.GetObject();
            });
            Parallel.For(0, objectCount, i =>
            {
                objects[i].Dispose();
            });

            await Task.Delay(1000);

            Assert.AreEqual(maxSize, pool.ObjectsInPoolCount);
        }
        public async Task ShouldSimplyWork(int maxSize)
        {
            const int keyCount    = 4;
            var       pool        = new ParameterizedObjectPool <int, MyPooledObject>(maxSize);
            var       objectCount = maxSize * keyCount;
            var       objects     = new MyPooledObject[objectCount];

            Parallel.For(0, objectCount, i =>
            {
                objects[i] = pool.GetObject(i % keyCount);
            });
            Parallel.For(0, objectCount, i =>
            {
                objects[i].Dispose();
            });

            await Task.Delay(1000);

            Assert.AreEqual(keyCount, pool.KeysInPoolCount);
        }
        public async Task ShouldSimplyWork(int maxSize)
        {
            const int keyCount = 4;
            var pool = new ParameterizedObjectPool<int, MyPooledObject>(0, maxSize);
            var objectCount = maxSize * keyCount;
            var objects = new MyPooledObject[objectCount];
            Parallel.For(0, objectCount, i =>
            {
                objects[i] = pool.GetObject(i % keyCount);
            });
            Parallel.For(0, objectCount, i =>
            {
                objects[i].Dispose();
            });
#if !NET40
            await Task.Delay(1000);
#else
            await TaskEx.Delay(1000);
#endif
            Assert.AreEqual(keyCount, pool.KeysInPoolCount);
        }
Example #4
0
        public async Task ShouldFillUntilMaximumSize_Async(int maxSize)
        {
            var pool = new ObjectPool<MyPooledObject>(0, maxSize);
            var objectCount = maxSize * 4;
            var objects = new MyPooledObject[objectCount];
            Parallel.For(0, objectCount, i =>
            {
                objects[i] = pool.GetObject();
            });
            Parallel.For(0, objectCount, i =>
            {
                objects[i].Dispose();
            });
#if !NET40
            await Task.Delay(1000);
#else
            await TaskEx.Delay(1000);
#endif
            pool.AdjustPoolSizeToBounds(AdjustMode.Minimum | AdjustMode.Maximum);
            Assert.AreEqual(maxSize, pool.ObjectsInPoolCount);
        }