System.Threading.SpinWait.SpinOnce C# (CSharp) Метод

SpinOnce() публичный Метод

public SpinOnce ( ) : void
Результат void
        public void SpinOnce()
        {
            ntime += 1;

            if (isSingleCpu) {
                // On a single-CPU system, spinning does no good
                Yield ();
            } else {
                if (ntime % step == 0)
                    Yield ();
                else
                    // Multi-CPU system might be hyper-threaded, let other thread run
                    Thread.SpinWait (Math.Min (ntime, maxTime) << 1);
            }
        }

Usage Example

        public void MeasureThroughput()
        {
            const int sendMessageCount = 2000000;

            var senderTransport = CreateAndStartZmqTransport("Abc.Testing.Sender");

            var receivedMessageCount = 0;
            var receiverTransport = CreateAndStartZmqTransport("Abc.Testing.Receiver", _ => ++receivedMessageCount);
            var receivers = new[] { new Peer(receiverTransport.PeerId, receiverTransport.InboundEndPoint) };

            var transportMessage = new FakeCommand(42).ToTransportMessage();
            senderTransport.Send(transportMessage, receivers);

            var spinWait = new SpinWait();
            while (receivedMessageCount != 1)
                spinWait.SpinOnce();

            using (Measure.Throughput(sendMessageCount))
            {
                for (var i = 0; i < sendMessageCount; ++i)
                {
                    senderTransport.Send(transportMessage, receivers);
                }

                while (receivedMessageCount != sendMessageCount + 1)
                    spinWait.SpinOnce();
            }

            senderTransport.Stop();
            receiverTransport.Stop();
        }
All Usage Examples Of System.Threading.SpinWait::SpinOnce