Ejemplo n.º 1
0
            public void Run()
            {
                _globalSignal.Signal();
                _globalSignal.Wait();

                Thread.Sleep(1000);
                long counter = 0;

                while (counter < _maxEvents)
                {
                    var t0 = Stopwatch.GetTimestamp();
                    _pingQueue.Enqueue(1L);
                    counter += _pongQueue.Dequeue();
                    var t1 = Stopwatch.GetTimestamp();

                    _histogram.RecordValueWithExpectedInterval(LatencyTestSession.ConvertStopwatchTicksToNano(t1 - t0), _pauseTimeInNano);

                    while (_pauseDurationInStopwatchTicks > (Stopwatch.GetTimestamp() - t1))
                    {
                        Thread.Sleep(0);
                    }
                }

                _signal.Set();
            }
Ejemplo n.º 2
0
            public void Run()
            {
                _globalSignal.Signal();
                _globalSignal.Wait();

                while (!_cancellationToken.IsCancellationRequested)
                {
                    long value;
                    if (_pingQueue.TryDequeue(out value))
                    {
                        _pongQueue.Enqueue(value);
                    }
                    else
                    {
                        Thread.Yield();
                    }
                }
            }
Ejemplo n.º 3
0
        public long Run(ThroughputSessionContext sessionContext)
        {
            var latch = new ManualResetEvent(false);

            _queueProcessor.Reset(latch);
            var future = Task.Run(() => _queueProcessor.Run());

            sessionContext.Start();

            for (long i = 0; i < _iterations; i++)
            {
                _blockingQueue.Enqueue(3L);
            }

            latch.WaitOne();
            sessionContext.Stop();
            _queueProcessor.Halt();
            future.Wait();

            PerfTestUtil.FailIf(_expectedResult, 0);

            return(_iterations);
        }