Пример #1
0
        public void AWriteTest()
        {
            var buffer = new ConcurrentRingBuffer <MyComplexValue>(0x1000);
            var value  = new MyComplexValue();

            for (long i = 0; i < 0x1000; i++)
            {
                Assert.IsTrue(buffer.Set(i, value));
            }
            for (long i = 0; i < 0x1000; i++)
            {
                Assert.IsTrue(buffer.TryGet(i, out value));
            }
            for (long i = 0; i < 0x1000; i++)
            {
                Assert.IsTrue(buffer.Clear(i));
            }
        }
Пример #2
0
        public void Test_Concurrent_Ring_Buffer()
        {
            var buffer = new ConcurrentRingBuffer <string>(3);

            buffer.Put("A");
            buffer.Put("B");
            Assert.AreEqual(buffer.Get().Count, 2);
            Assert.AreEqual(buffer.GetFirst(), "A");
            Assert.AreEqual(buffer.GetLast(), "B");

            buffer.Put("C");
            Assert.AreEqual(buffer.Get().Count, 3);
            Assert.AreEqual(buffer.GetFirst(), "A");
            Assert.AreEqual(buffer.GetLast(), "C");

            buffer.Put("D");
            Assert.AreEqual(buffer.Get().Count, 3);
            Assert.AreEqual(buffer.GetLast(), "D");
            Assert.AreEqual(buffer.GetFirst(), "B");
        }
Пример #3
0
        public void SpeedRunTest()
        {
            long size   = 0x1000000;
            var  buffer = new ConcurrentRingBuffer <MyComplexValue>((uint)size);
            var  value  = new MyComplexValue();

            for (long i = 0; i < size; i++)
            {
                buffer.Set(i, value);
            }

            for (long i = 0; i < size; i++)
            {
                buffer.TryGet(i, out value);
            }

            for (long i = 0; i < size; i++)
            {
                buffer.Clear(i);
            }
        }