コード例 #1
0
        static void Main()
        {
            var stack = new ConcurrentStack <int>();

            stack.Push(1);
            stack.Push(2);
            stack.Push(3);
            stack.Push(4);

            int result;

            if (stack.TryPeek(out result))
            {
                Console.WriteLine($"{result} is on top");
            }

            if (stack.TryPop(out result))
            {
                Console.WriteLine($"Popped {result}");
            }

            var items = new int[5];

            if (stack.TryPopRange(items, 0, 5) > 0) // actually pops only 3 items
            {
                var text = string.Join(", ", items.Select(i => i.ToString()));
                Console.WriteLine($"Popped these items: {text}");
            }
        }
コード例 #2
0
        static void ConcurrentStackDemo()
        {
            var names = new ConcurrentStack <string>();

            names.Push("Bob");
            names.Push("Alice");
            names.Push("Rob");

            Console.WriteLine($"After enqueuing, count = {names.Count}");

            string item1; //= names.Dequeue();
            bool   success = names.TryPop(out item1);

            if (success)
            {
                Console.WriteLine("\nRemoving " + item1);
            }
            else
            {
                Console.WriteLine("queue was empty");
            }

            string item2; //=names.Peek();

            success = names.TryPeek(out item2);
            if (success)
            {
                Console.WriteLine("Peeking  " + item2);
            }
            else
            {
                Console.WriteLine("queue was empty");
            }
            Console.WriteLine("Enumerating");
            PrintOutCollection(names);

            Console.WriteLine("\nAfter enumerating, count = " + names.Count);
        }