队列(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
以上就是对列的基本使用方法。
对列的使用场景有很多。所有要异步处理的都可以使用对列的方式。如接口日志异步处理,邮件、短信异步发送等。对列一般配合单例设计模式和线程一起使用更佳。
原标题:ConcurrentQueue对列的基本使用方式
关键词: