Example #1
0
        public async Task DisruptorTest()
        {
            var disruptor =
                new Disruptor.Dsl.Disruptor <ValueEntry>(() => new ValueEntry(), RingBufferAndCapacitySize, TaskScheduler.Default,
                                                         producerCount > 1 ? ProducerType.Multi : ProducerType.Single, new BlockingWaitStrategy());

            disruptor.HandleEventsWith(new MyHandler());
            var       _ringBuffer = disruptor.Start();
            Stopwatch sw          = Stopwatch.StartNew();

            sw.Start();
            var tasks = new Task[producerCount];

            for (int t = 0; t < producerCount; t++)
            {
                tasks[t] = Task.Run(() =>
                {
                    for (int i = 0; i < runCount; i++)
                    {
                        long sequenceNo            = _ringBuffer.Next();
                        _ringBuffer[sequenceNo].Id = 0;
                        _ringBuffer.Publish(sequenceNo);
                    }
                });
            }
            await Task.WhenAll(tasks);

            disruptor.Shutdown();
            sw.Stop();
            Console.WriteLine($"DisruptorTest Time:{sw.ElapsedMilliseconds/1000d}s");
        }
Example #2
0
        public void DisruptorTest()
        {
            var disruptor =
                new Disruptor.Dsl.Disruptor <ValueEntry>(() => new ValueEntry(), RingSize, TaskScheduler.Default,
                                                         ProducerType.Single, new BlockingWaitStrategy());

            disruptor.HandleEventsWith(new MyHandler());
            var       _ringBuffer = disruptor.Start();
            Stopwatch sw          = Stopwatch.StartNew();

            sw.Start();
            for (int i = 0; i < runCount; i++)
            {
                long sequenceNo = _ringBuffer.Next();
                _ringBuffer[sequenceNo].Id = 0;
                _ringBuffer.Publish(sequenceNo);
            }
            disruptor.Shutdown();
            sw.Stop();
            Console.WriteLine($"DisruptorTest Time:{sw.ElapsedMilliseconds}");
        }