当前位置: 首页>>代码示例>>C#>>正文


C# ConcurrentBag.TryPeek方法代码示例

本文整理汇总了C#中ConcurrentBag.TryPeek方法的典型用法代码示例。如果您正苦于以下问题:C# ConcurrentBag.TryPeek方法的具体用法?C# ConcurrentBag.TryPeek怎么用?C# ConcurrentBag.TryPeek使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ConcurrentBag的用法示例。


在下文中一共展示了ConcurrentBag.TryPeek方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Main

        static void Main(string[] args)
        {
            ConcurrentBag<int> bag = new ConcurrentBag<int>();
            bag.Add(42);
            bag.Add(21);

            int result;
            if (bag.TryTake(out result))
            {
                Console.WriteLine(result);
            }

            if (bag.TryPeek(out result))
            {
                Console.WriteLine("There is a next item: {0}", result);
            }

            if (bag.TryTake(out result))
            {
                Console.WriteLine(result);
            }

            Console.Write("Press a key to exit");
            Console.ReadKey();
        }
开发者ID:jbijoux,项目名称:Exam70_483,代码行数:25,代码来源:Program.cs

示例2: PopAndPush_CallPopBeforePush_CorrectCouners

        public void PopAndPush_CallPopBeforePush_CorrectCouners()
        {
            ConcurentQueue<int> concurentQueue = new ConcurentQueue<int>(10000);

            ConcurrentBag<int> popResult = new ConcurrentBag<int>();
            ConcurrentBag<Exception> popResultEx = new ConcurrentBag<Exception>();
            ConcurrentBag<int> pushItems = new ConcurrentBag<int>();
            Parallel.For(0, 10, i =>
            {
                pushItems.Add(i);
                try
                {
                    var temp = concurentQueue.Pop();
                    popResult.Add(temp);
                }
                catch (Exception exp)
                {
                    popResultEx.Add(exp);
                }
                concurentQueue.Push(i);
            });

            Exception exception;
            popResultEx.TryPeek(out exception);
            Assert.IsInstanceOf(typeof(TimeoutException), exception);
            Assert.AreEqual(pushItems.Count, popResult.Count + popResultEx.Count);
        }
开发者ID:sokolnikov90,项目名称:Kasper,代码行数:27,代码来源:ConcurentQueueIntegrationTests.cs

示例3: Main

        static void Main(string[] args)
        {
            ConcurrentBag<int> bag = new ConcurrentBag<int>();

            bag.Add(123);
            bag.Add(321);
            bag.Add(123123);

            int result;

            if (bag.TryTake(out result))
            {
                Console.WriteLine(result);
            }

            if (bag.TryTake(out result))
            {
                Console.WriteLine(result);
            }

            if (bag.TryPeek(out result))
            {
                Console.WriteLine("There is a next itam: {0}", result);
            }

            Console.ReadLine();
        }
开发者ID:Willamar,项目名称:ExamRef-70-483,代码行数:27,代码来源:Program.cs

示例4: DemoConcurrentBag

        private static void DemoConcurrentBag()
        {
            Console.WriteLine("Demo Concurrent Bag ----------------------");
            var shirts = new ConcurrentBag<string>();
            shirts.Add("Pluralsight");
            shirts.Add("WordPress");
            shirts.Add("Code School");

            Console.WriteLine("After enqueuing, count = " + shirts.Count);

            string item1; //= shirts.Dequeue();
            bool success = shirts.TryTake(out item1);
            if (success)
                Console.WriteLine("\r\nRemoving " + item1);
            else
                Console.WriteLine("queue was empty");

            string item2; //= shirts.Peek();
            success = shirts.TryPeek(out item2);
            if (success)
                Console.WriteLine("Peeking   " + item2);
            else
                Console.WriteLine("queue was empty");

            Console.WriteLine("\r\nEnumerating:");
            foreach (string item in shirts)
                Console.WriteLine(item);

            Console.WriteLine("\r\nAfter enumerating, count = " + shirts.Count);
        }
开发者ID:Jac21,项目名称:GistsCollection,代码行数:30,代码来源:Program.cs

示例5: TestPeeking_Scenario_Result

        public void TestPeeking_Scenario_Result()
        {
            ConcurrentBag<object> bag = new ConcurrentBag<object> { 42, 21, 66, 99, 1 ,"joey"};
            object result;

            bag.Add("Mikey");
            if (bag.TryTake(out result))
            {
                Console.WriteLine(result);
            }
            if (bag.TryPeek(out result))
            {
                Console.WriteLine(@"There is a next item: {0}", result);
            }
            if (bag.TryPeek(out result))
            {
                Console.WriteLine(@"There is a next item: {0}", result);
            }
        }
开发者ID:Foxpips,项目名称:ProgrammingCSharp,代码行数:19,代码来源:ConcurrentBagTester.cs

示例6: Run

 public void Run()
 {
     ConcurrentBag<int> bag = new ConcurrentBag<int>();
     bag.Add(42);
     bag.Add(21);
     int result;
     if (bag.TryTake(out result))
         Console.WriteLine(result);
     if (bag.TryPeek(out result))
         Console.WriteLine("There is a next item: {0}", result);
 }
开发者ID:vikramadhav,项目名称:Certification_70-483,代码行数:11,代码来源:Listing_1_30.cs

示例7: ConcurrentCollectionTest

 //ConcurrentCollectionTest
 public static void ConcurrentCollectionTest()
 {
     ConcurrentBag<string> bag = new ConcurrentBag<string>();
     bag.Add("just a test!");
     bag.Add("abc");
     bag.Add("ARCAS");
     string result;
     bag.TryPeek(out result);
     Console.WriteLine(result);
     BlockingCollection<string> collection = new BlockingCollection<string>();
 }
开发者ID:vjzr-Phonex,项目名称:C_Sharp,代码行数:12,代码来源:Program.cs

示例8: Example1

        private void Example1()
        {
            ConcurrentBag<int> concurrentBag = new ConcurrentBag<int>();

            concurrentBag.Add(21);
            concurrentBag.Add(43);
            concurrentBag.Add(32);

            Console.WriteLine("Initial Concurrent Bag count :" + concurrentBag.Count);
            int result;
            if (concurrentBag.TryTake(out result))
                Console.WriteLine("Concurrent bag count after Take :" + concurrentBag.Count);

            if (concurrentBag.TryPeek(out result))
                Console.WriteLine("Concurrent bag count after Peek :" + concurrentBag.Count);
        }
开发者ID:mayankaggarwal,项目名称:MyConcepts,代码行数:16,代码来源:Concept17.cs

示例9: Main

        public static void Main(string[] args)
        {
            // One thing to keep in mind is that the TryPeek method is not very useful in a multithreaded environment.
            // It could be that another thread removes the item before you can access it.

            ConcurrentBag<int> bag = new ConcurrentBag<int>();

            bag.Add(42);
            bag.Add(21);

            int result;
            if (bag.TryTake(out result))
                Console.WriteLine(result);

            if (bag.TryPeek(out result))
                Console.WriteLine("There is a next item: {0}", result);

            Console.ReadLine();
        }
开发者ID:nissbran,项目名称:Training-Certifications,代码行数:19,代码来源:Program.cs

示例10: RTest3_TakeOrPeek

        /// <summary>
        /// Test bag Take and Peek operations
        /// </summary>
        /// <param name="bag"></param>
        /// <param name="threadsCount"></param>
        /// <param name="itemsPerThread"></param>
        /// <param name="take"></param>
        /// <returns>True if succeeded, false otherwise</returns>
        private static void RTest3_TakeOrPeek(ConcurrentBag<int> bag, int threadsCount, int itemsPerThread, bool take)
        {
            int bagCount = bag.Count;
            int succeeded = 0;
            int failures = 0;
            Task[] threads = new Task[threadsCount];
            for (int i = 0; i < threads.Length; i++)
            {
                threads[i] = Task.Run(() =>
                {
                    for (int j = 0; j < itemsPerThread; j++)
                    {
                        int data;
                        bool result = false;
                        if (take)
                        {
                            result = bag.TryTake(out data);
                        }
                        else
                        {
                            result = bag.TryPeek(out data);
                        }

                        if (result)
                        {
                            Interlocked.Increment(ref succeeded);
                        }
                        else
                        {
                            Interlocked.Increment(ref failures);
                        }
                    }
                });
            }

            Task.WaitAll(threads);

            if (take)
            {
                Assert.Equal(bagCount - succeeded, bag.Count);
            }
            else
            {
                Assert.Equal(0, failures);
            }
        }
开发者ID:noahfalk,项目名称:corefx,代码行数:54,代码来源:ConcurrentBagTests.cs

示例11: RTest2_Add

        /// <summary>
        /// Test bag addition
        /// </summary>
        /// <param name="threadsCount"></param>
        /// <param name="itemsPerThread"></param>
        /// <returns>True if succeeded, false otherwise</returns>
        private static void RTest2_Add(int threadsCount, int itemsPerThread)
        {
            int failures = 0;
            ConcurrentBag<int> bag = new ConcurrentBag<int>();

            Task[] threads = new Task[threadsCount];
            for (int i = 0; i < threads.Length; i++)
            {
                threads[i] = Task.Run(() =>
                {
                    for (int j = 0; j < itemsPerThread; j++)
                    {
                        try
                        {
                            bag.Add(j);
                            int item;
                            if (!bag.TryPeek(out item) || item != j)
                            {
                                Interlocked.Increment(ref failures);
                            }
                        }
                        catch
                        {
                            Interlocked.Increment(ref failures);
                        }
                    }
                });
            }

            Task.WaitAll(threads);

            Assert.Equal(0, failures);
            Assert.Equal(itemsPerThread * threadsCount, bag.Count);
        }
开发者ID:noahfalk,项目名称:corefx,代码行数:40,代码来源:ConcurrentBagTests.cs

示例12: Pop_ItemsFromEmptyQueue_CorrectCounters

        public void Pop_ItemsFromEmptyQueue_CorrectCounters()
        {
            ConcurentQueue<int> concurentQueue = new ConcurentQueue<int>(5000);

            ConcurrentBag<Exception> popResult = new ConcurrentBag<Exception>();
            ConcurrentBag<int> pushItems = new ConcurrentBag<int>();
            Parallel.For(0, 10, i =>
            {
                pushItems.Add(i);
                try
                {
                    concurentQueue.Pop();
                }
                catch (Exception exp)
                {
                    popResult.Add(exp);
                }
            });

            Exception exception;
            popResult.TryPeek(out exception);
            Assert.IsInstanceOf(typeof(TimeoutException), exception);
            Assert.AreEqual(pushItems.Count, popResult.Count);
        }
开发者ID:sokolnikov90,项目名称:Kasper,代码行数:24,代码来源:ConcurentQueueIntegrationTests.cs

示例13: Cozy

        public static void Cozy()
        {
            Console.WriteLine("\n-----------------------------------------------");
            Console.WriteLine(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);
            Console.WriteLine("-----------------------------------------------");

            //并发集合
            //ConcurrentXXX这些集合都是线程安全的,实现了IProducerConsumerCollection<T>接口
            //里面如下的方法

            //[__DynamicallyInvokable]
            //void CopyTo(T[] array, int index);
        
            //[__DynamicallyInvokable]
            //bool TryAdd(T item);
        
            //[__DynamicallyInvokable]
            //bool TryTake(out T item);
        
            //[__DynamicallyInvokable]
            //T[] ToArray();

            //TryXX()方法返回一个bool值,说明操作是否成功

            //ConcurrentQueue<T>
            var concurrentQueue = new ConcurrentQueue<int>();
            concurrentQueue.Enqueue(1);
            int i;
            var reslut = concurrentQueue.TryPeek(out i);
            reslut = concurrentQueue.TryDequeue(out i);

            //ConcurrentStack<T>
            var concurrentStack = new ConcurrentStack<int>();
            concurrentStack.Push(1);
            reslut = concurrentStack.TryPeek(out i);
            reslut = concurrentStack.TryPop(out i);

            //ConcurrentBag<T>
            var concurrentBag = new ConcurrentBag<int>();
            concurrentBag.Add(1);
            reslut = concurrentBag.TryPeek(out i);
            reslut = concurrentBag.TryTake(out i);

            //ConcurrentDictionary<TKey,TValue>
            //该集合没实现IProducerConsumerCollection<T>,因此它的TryXX()是以非堵塞的方式访问成员
            var concurrentDictionary = new ConcurrentDictionary<int, int>();
            reslut = concurrentDictionary.TryAdd(1, 1);
            reslut = concurrentDictionary.TryRemove(1, out i);

            //BlockingCollection<T>,该集合的Add()和Taake()会阻塞线程并且一直等待
            var blockingCollection = new BlockingCollection<int>();

            var events  = new ManualResetEventSlim[2];
            var waits = new WaitHandle[2];

            for (int j = 0; j < events.Length; j++)
            {
                events[j] = new ManualResetEventSlim(false);
                waits[j] = events[j].WaitHandle;
            }

            new Thread(() =>
            {
                for (int j = 0; j < 300; j++)
                {
                    blockingCollection.Add(j);
                }
                events[0].Set();
            }).Start();

            new Thread(() =>
            {
                for (int j = 0; j < 300; j++)
                {
                    blockingCollection.Take();
                }
                events[1].Set();
            }).Start();

            if (!WaitHandle.WaitAll(waits))
            {
                Console.WriteLine("wait failed");
            }
            else
            {
                Console.WriteLine("reading/writing finished");
            }
        }
开发者ID:xxy1991,项目名称:cozy,代码行数:88,代码来源:I12ConcurrentCollection.cs

示例14: RunConcurrentBagTest3_TakeOrPeek

        /// <summary>
        /// Test bag Take and Peek operations
        /// </summary>
        /// <param name="bag"></param>
        /// <param name="threadsCount"></param>
        /// <param name="itemsPerThread"></param>
        /// <param name="take"></param>
        /// <returns>True if succeeded, false otherwise</returns>
        private static bool RunConcurrentBagTest3_TakeOrPeek(ConcurrentBag<int> bag, int threadsCount, int itemsPerThread, bool take)
        {
            TestHarness.TestLog("* RunConcurrentBagTest3_TakeOrPeek(" + threadsCount + "," + itemsPerThread + ")");
            int bagCount = bag.Count;
            int succeeded = 0;
            int failures = 0;
            Thread[] threads = new Thread[threadsCount];
            for (int i = 0; i < threads.Length; i++)
            {
                threads[i] = new Thread(() =>
                {
                    for (int j = 0; j < itemsPerThread; j++)
                    {
                        try
                        {
                            int data;
                            bool result = false;
                            if (take)
                            {
                                result = bag.TryTake(out data);
                            }
                            else
                            {
                                result = bag.TryPeek(out data);
                            }
                            if (result)
                            {
                                Interlocked.Increment(ref succeeded);
                            }
                            else
                            {
                                Interlocked.Increment(ref failures);
                            }

                        }
                        catch
                        {
                            Interlocked.Increment(ref failures);
                        }
                    }
                });

                threads[i].Start();
            }

            for (int i = 0; i < threads.Length; i++)
            {
                threads[i].Join();
            }

            if (take)
            {
                if (bag.Count != bagCount - succeeded)
                {
                    TestHarness.TestLog("TryTake failed, the remaing count doesn't match the expected count");
                    return false;
                }
            }
            else if (failures > 0)
            {
                TestHarness.TestLog("TryPeek failed, Unexpected exceptions has been thrown");
                return false;
            }
            TestHarness.TestLog("Try Take/peek succeeded");
            return true;


        }
开发者ID:modulexcite,项目名称:IL2JS,代码行数:76,代码来源:ConcurrentBagTests.cs

示例15: ProcessFrame


//.........这里部分代码省略.........
                {
                    // Sequential mode. Scan the integral image searching
                    // for objects in the window without parallelization.

                    // For every pixel in the window column
                    for (int y = 0; y < yEnd; y += yStep)
                    {
                        window.Y = y;

                        // For every pixel in the window row
                        for (int x = 0; x < xEnd; x += xStep)
                        {
                            window.X = x;

                            if (searchMode == ObjectDetectorSearchMode.NoOverlap && overlaps(window))
                                continue; // We have already detected something here, moving along.

                            // Try to detect and object inside the window
                            if (classifier.Compute(integralImage, window))
                            {
                                // an object has been detected
                                detectedObjects.Add(window);

                                if (searchMode == ObjectDetectorSearchMode.Single)
                                    goto EXIT; // Stop on first object found
                            }
                        }
                    }
                }

                else
                {
                    // Parallel mode. Scan the integral image searching
                    // for objects in the window with parallelization.
                    ConcurrentBag<Rectangle> bag = new ConcurrentBag<Rectangle>();

                    int numSteps = (int)Math.Ceiling((double)yEnd / yStep);

                    // For each pixel in the window column
                    Parallel.For(0, numSteps, (j, options) =>
                    {
                        int y = j * yStep;

                        // Create a local window reference
                        Rectangle localWindow = window;

                        localWindow.Y = y;

                        // For each pixel in the window row
                        for (int x = 0; x < xEnd; x += xStep)
                        {
                            if (options.ShouldExitCurrentIteration) return;

                            localWindow.X = x;

                            // Try to detect and object inside the window
                            if (classifier.Compute(integralImage, localWindow))
                            {
                                // an object has been detected
                                bag.Add(localWindow);

                                if (searchMode == ObjectDetectorSearchMode.Single)
                                    options.Stop();
                            }
                        }
                    });

                    // If required, avoid adding overlapping objects at
                    // the expense of extra computation. Otherwise, only
                    // add objects to the detected objects collection.
                    if (searchMode == ObjectDetectorSearchMode.NoOverlap)
                    {
                        foreach (Rectangle obj in bag)
                            if (!overlaps(obj)) detectedObjects.Add(obj);
                    }
                    else if (searchMode == ObjectDetectorSearchMode.Single)
                    {
                        if (bag.TryPeek(out window))
                        {
                            detectedObjects.Add(window);
                            goto EXIT;
                        }
                    }
                    else
                    {
                        foreach (Rectangle obj in bag)
                            detectedObjects.Add(obj);
                    }
                }
            }

            EXIT:

            Rectangle[] objects = detectedObjects.ToArray();

            checkSteadiness(objects);
            lastObjects = objects;

            return objects; // Returns the array of detected objects.
        }
开发者ID:insertyourcoin,项目名称:bsuir-misoi,代码行数:101,代码来源:HaarObjectDetector.cs


注:本文中的ConcurrentBag.TryPeek方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。