队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队

  ConcurrentQueue<T>队列是一个高效的线程安全的队列,是.Net Framework 4.0,System.Collections.Concurrent命名空间下的一个数据结构。

 对列初始化:

 ConcurrentQueue<ApiLogContract> Queue = new ConcurrentQueue<ApiLogContract>();

 /// <summary>
/// 单条入队列
/// </summary>
/// <param name="model">入列模型</param> Queue.Enqueue(model); /// <summary>
/// 多条入队
/// </summary>
/// <param name="list"></param> List<ApiLogContract> list = new List<ApiLogContract>(); list.add(new model{}); list.add(new model{}); list.add(new model{}); list.add(new model{}); list.ForEach(t => Enqueue(t)); /// <summary>
/// 单条出队
/// </summary>
/// <returns></returns> ApiLogContract apiLog = null;
Queue.TryDequeue(out apiLog); /// <summary>
/// 多条出队
/// </summary>
/// <param name="count">数量</param>
/// <returns></returns> var logs = new List<ApiLogContract>(); if (Queue.Count > )
{
  for (int i = ; i < count; i++)
  {
    var source = Dequeue();
    if (source != null)
    {
      logs.Add(source);
    }
  }
}
/// <summary>
/// 获取对列数量
/// </summary>
/// <returns></returns>
Queue.Count
/// <summary>
/// 确定序列是否包含任何元素[用于判断对列是否有要处理的数据]这个方法的性能比Count()方法快
/// </summary>
/// <returns></returns>
Queue.Any()

以上就是对列的基本使用方法。

对列的使用场景有很多。所有要异步处理的都可以使用对列的方式。如接口日志异步处理,邮件、短信异步发送等。对列一般配合单例设计模式和线程一起使用更佳。

ConcurrentQueue对列的基本使用方式的更多相关文章

  1. Java将数据按列写入Excel并设置格式(字体、背景色、自动列宽、对齐方式等)

    本文使用jxl.jar工具类库将数据按列写入Excel并设置格式(字体.背景色.自动列宽.对齐方式等). /** * 按列写入Excel并设置格式 * * @param outputUrl * 输出路 ...

  2. Oracle字符串行拆分成列的三种方式

    Oracle字符串行拆分成列的三种方式 --muphy 开发过程中经常会遇到将前台多个值用逗号连接一同传递到后台查询,这个用逗号连接的字符串分隔的每个字符串分别对应Oracle数据库表的不同行. 如下 ...

  3. EasyUI创建DataGrid及冻结列的两种方式

       第一种方式:通过HTML标签创建数据表格控件 <table class="easyui-datagrid" title="基本数据表格" style ...

  4. CSS两列布局的多种方式

    两列布局(一侧固定宽度,一侧自适应),在工作中应该是经常使用到,可以说是前端基础了.这种两列布局的样式是我们在平时工作中非常常见的设计,同时也是面试中要求实现的高频题.很有必要掌握以备不时之需.这里总 ...

  5. PyQt(Python+Qt)学习随笔:QTableWidget表格部件中行高和列宽的计算方式

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTableWidget表格部件中行高和列宽的计算在Qt提供的资料中内容介绍比较泛,细节说得不清楚, ...

  6. linq查询结果指定列的两种方式

    方式一: var results = from product in products orderby product.Price descending select new { product.Na ...

  7. SQL中进行转列的几种方式

    SQL中进行转列 在很多笔试的程序员中会有很多写SQL的情况,其中很多时候会考察行转列.那么这个时候如果能写出来几种行转列的SQL,会给面试官留下比较好的印象. 以下是这次sql转换的表结构以及数据 ...

  8. HTML学习笔记 iframe引用页面按列(针对target打开方式解释) 第九节 (原创)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. oracle行转列、列转行、连续日期数字实现方式及mybatis下实现方式

    转载请注明出处:https://www.cnblogs.com/funnyzpc/p/9977591.html 九月份复习,十月份考试,十月底一直没法收心,赶在十一初 由于不可抗拒的原因又不得不重新找 ...

随机推荐

  1. URI和URL

    URI(uniform resource identifier),统一资源标识符,用来唯一的标识一个资源. URL(uniform resource locator),统一资源定位器,它是一种具体的U ...

  2. Mac系统cocos2dx + android 开发环境配置

    Mac系统cocos2dx + android 开发环境配置 /****************************************************** 这遍文章主要转载自:htt ...

  3. Hibernate学习笔记(一):mycelipse建立项目流程(未完成)

    1.部署数据库: 2.部署项目: 3.引入Hibernate: 4.url配置

  4. 大转盘Demo

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  5. Django的model中日期字段设置默认值的问题

    之前写过这样一个model: class MonthlyFeeMember(models.Model): worker = models.ForeignKey(Student, verbose_nam ...

  6. Ubuntu下给Sublime Text 3添加用python3运行文件

    Ubuntu14.04: 菜单栏:Tools-Build System-New Build System { "cmd": ["python3", " ...

  7. ZOJ 3818 Pretty Poem

    暴力模拟 细节处理很重要... #include <iostream> #include <cstring> #include <cstdio> using nam ...

  8. LightOj 1230 Placing Lampposts(树形DP)

    题意:给定一个森林.每个节点上安装一个灯可以覆盖与该节点相连的所有边.选择最少的节点数num覆盖所有的边.在num最小的前提下,合理放置num个灯使得被两个灯覆盖的边最多? 思路:F[i][0]代表没 ...

  9. Qt判断和打开进程(windows端),运行,检测,中止

    windows端的Qt程序往往需要打开外部程序(如:prog.exe),并且需要确定这个外部程序是唯一打开的. 1.判断系统中是否存在prog.exe void judge() { QProcess ...

  10. 《Programming WPF》翻译 第8章 2.Timeline

    原文:<Programming WPF>翻译 第8章 2.Timeline Timeline代表了时间的延伸.它通常还描述了一个或多个在这段时间所发生的事情.例如,在前面章节描述的动画类型 ...