示例#1
0
        public void TestEnqueue()
        {
            SQueue queue    = new SQueue(new Node(0));
            Node   testNode = new Node(100);

            queue.Enqueue(testNode);
            Assert.Equal(testNode, queue.Peek().Next);
        }
示例#2
0
        public void TestDequeue()
        {
            Node   testNode1 = new Node(100);
            Node   testNode2 = new Node(999);
            SQueue queue     = new SQueue(testNode1);

            queue.Enqueue(testNode2);
            Assert.True(queue.Dequeue() == testNode1 && queue.Peek() == testNode2);
        }
示例#3
0
        static void Main(string[] args)
        {
            SQueue queue = MakeQueue(5, 50, 5);

            Console.WriteLine("Initial queue");
            ViewQueue(queue);
            queue.Enqueue(queue.Dequeue());
            Console.WriteLine("\nQueue after moving the front to the rear");
            ViewQueue(queue);
            Console.ReadKey();
        }
示例#4
0
        /// <summary>
        /// Creates and populates a SQueue.
        /// </summary>
        /// <param name="start">The value of the first node in the SQueue.</param>
        /// <param name="end">The maximum value for the nodes generated.</param>
        /// <param name="step">The difference in the values of adjacent nodes.</param>
        /// <returns>The resulting SQueue.</returns>
        static SQueue MakeQueue(int start, int end, int step)
        {
            Node   node  = new Node(start);
            SQueue queue = new SQueue(node);

            for (int i = start + step; i <= end; i += step)
            {
                node = new Node(i);
                queue.Enqueue(node);
            }
            return(queue);
        }
示例#5
0
文件: SPROT1.cs 项目: ww-it/Raft.Net
        private void SpreadReadyPackage(int codec, byte[] data)
        {
            qrpe.Enqueue(new RPE()
            {
                Codec = codec,
                Data  = data
            });

            lock (lock_threadIsStarted)
            {
                if (threadIsStarted)
                {
                    return;
                }

                threadIsStarted = true;
            }

            Action spreadAction = () =>
            {
                RPE rpe = null;

                while (true)
                {
                    lock (lock_threadIsStarted)
                    {
                        rpe = qrpe.Dequeue();
                        if (rpe == null)
                        {
                            threadIsStarted = false;
                            return;
                        }
                    }

                    this.packetParser(rpe.Codec, rpe.Data);
                }
            };

            Task.Run(spreadAction);
        }