标签:
队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。
ConcurrentQueue<T>队列是一个高效的线程安全的队列,是.Net Framework 4.0,System.Collections.Concurrent命名空间下的一个数据结构。
1 对列初始化: 2 3 ConcurrentQueue<ApiLogContract> Queue = new ConcurrentQueue<ApiLogContract>(); 4 5 /// <summary> 6 /// 单条入队列 7 /// </summary> 8 /// <param name="model">入列模型</param> 9 10 Queue.Enqueue(model); 11 12 13 14 /// <summary> 15 /// 多条入队 16 /// </summary> 17 /// <param name="list"></param> 18 19 List<ApiLogContract> list = new List<ApiLogContract>(); 20 21 list.add(new model{}); 22 23 list.add(new model{}); 24 25 list.add(new model{}); 26 27 list.add(new model{}); 28 29 list.ForEach(t => Enqueue(t)); 30 31 32 33 /// <summary> 34 /// 单条出队 35 /// </summary> 36 /// <returns></returns> 37 38 ApiLogContract apiLog = null; 39 Queue.TryDequeue(out apiLog); 40 41 42 43 /// <summary> 44 /// 多条出队 45 /// </summary> 46 /// <param name="count">数量</param> 47 /// <returns></returns> 48 49 var logs = new List<ApiLogContract>(); 50 51 if (Queue.Count > 0) 52 { 53 for (int i = 0; i < count; i++) 54 { 55 var source = Dequeue(); 56 if (source != null) 57 { 58 logs.Add(source); 59 } 60 } 61 }
/// <summary> /// 获取对列数量 /// </summary> /// <returns></returns> Queue.Count
以上就是对列的基本使用方法。
对列的使用场景有很多。所有要异步处理的都可以使用对列的方式。如接口日志异步处理,邮件、短信异步发送等。对列一般配合单例设计模式和线程一起使用更佳。
标签:
原文地址:http://www.cnblogs.com/stevenchen2016/p/5397270.html