zoukankan      html  css  js  c++  java
  • C# 同步/并发队列ConcurrentQueue

     如下所示,ConcurrentQueue做到了代码的简化,在并发模型中充当同步对象

    private ConcurrentQueue<string> inQueue = new ConcurrentQueue<string>();
    
    private object lockObject = new object();
    private Queue<string> queue = new Queue<string>();

    MSDN例子(还是并行库强大):

            static void Main(string[] args)
            {
                // Construct a ConcurrentQueue.
                ConcurrentQueue<int> cq = new ConcurrentQueue<int>();
    
                // Populate the queue.
                for (int i = 0; i < 10000; i++) cq.Enqueue(i);
    
                // Peek at the first element.
                int result;
                if (!cq.TryPeek(out result))
                {
                    Console.WriteLine("CQ: TryPeek failed when it should have succeeded");
                }
                else if (result != 0)
                {
                    Console.WriteLine("CQ: Expected TryPeek result of 0, got {0}", result);
                }
    
                int outerSum = 0;
                // An action to consume the ConcurrentQueue.
                Action action = () =>
                {
                    int localSum = 0;
                    int localValue;
                    while (cq.TryDequeue(out localValue)) localSum += localValue;
                    Interlocked.Add(ref outerSum, localSum);
                };
    
                // Start 4 concurrent consuming actions.
                Parallel.Invoke(action, action, action, action);
    
                Console.WriteLine("outerSum = {0}, should be 49995000", outerSum);
            }
  • 相关阅读:
    struts2基础
    hibernate框架基础
    Django的模板层
    HBuilder无法连接夜神模拟器的解决办法
    Django的视图层
    Django的路由层
    Django简介
    http协议
    web应用
    Mongodb之增删改查
  • 原文地址:https://www.cnblogs.com/pengzhen/p/3579437.html
Copyright © 2011-2022 走看看