public OneToThreeSequencedThroughputTest()
            : base(Test_Disruptor, ITERATIONS,7)
        {
            ThreadPool.SetMaxThreads(NUM_EVENT_PROCESSORS,NUM_EVENT_PROCESSORS);
            for (long i = 0; i < ITERATIONS; i++)
            {
                results[0] = Operation.Addition.Op(results[0], i);
                results[1] = Operation.Substraction.Op(results[1], i);
                results[2] = Operation.And.Op(results[2], i);
            }
            sequenceBarrier = ringBuffer.NewBarrier();

            handlers[0] = new ValueMutationEventHandler_v3(Operation.Addition);
            handlers[1] = new ValueMutationEventHandler_v3(Operation.Substraction);
            handlers[2] = new ValueMutationEventHandler_v3(Operation.And);

            batchEventProcessors[0] = new BatchEventProcessor<ValueEvent>(ringBuffer, sequenceBarrier, handlers[0]);
            batchEventProcessors[1] = new BatchEventProcessor<ValueEvent>(ringBuffer, sequenceBarrier, handlers[1]);
            batchEventProcessors[2] = new BatchEventProcessor<ValueEvent>(ringBuffer, sequenceBarrier, handlers[2]);

            ringBuffer.AddGatingSequences(
                                     batchEventProcessors[0].Sequence,
                                     batchEventProcessors[1].Sequence,
                                     batchEventProcessors[2].Sequence);
        }
        public OneToThreeSequencedThroughputTest()
            : base(Test_Disruptor, ITERATIONS, 7)
        {
            ThreadPool.SetMaxThreads(NUM_EVENT_PROCESSORS, NUM_EVENT_PROCESSORS);
            for (long i = 0; i < ITERATIONS; i++)
            {
                results[0] = Operation.Addition.Op(results[0], i);
                results[1] = Operation.Substraction.Op(results[1], i);
                results[2] = Operation.And.Op(results[2], i);
            }
            sequenceBarrier = ringBuffer.NewBarrier();

            handlers[0] = new ValueMutationEventHandler_v3(Operation.Addition);
            handlers[1] = new ValueMutationEventHandler_v3(Operation.Substraction);
            handlers[2] = new ValueMutationEventHandler_v3(Operation.And);

            batchEventProcessors[0] = new BatchEventProcessor <ValueEvent>(ringBuffer, sequenceBarrier, handlers[0]);
            batchEventProcessors[1] = new BatchEventProcessor <ValueEvent>(ringBuffer, sequenceBarrier, handlers[1]);
            batchEventProcessors[2] = new BatchEventProcessor <ValueEvent>(ringBuffer, sequenceBarrier, handlers[2]);

            ringBuffer.AddGatingSequences(
                batchEventProcessors[0].Sequence,
                batchEventProcessors[1].Sequence,
                batchEventProcessors[2].Sequence);
        }