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"); }
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}"); }