美文网首页
netCore当中的队列Queue、ConcurrentQueu

netCore当中的队列Queue、ConcurrentQueu

作者: CareyYang | 来源:发表于2019-07-14 22:03 被阅读0次

队列Queues,是一种遵循先进先出的原则的集合,在.netCore中微软给我们提供了很多个类,就目前本人所知的有三种,分别是标题提到的:Queue、ConcurrentQueue、BlockingCollection,下面分别介绍一下。

一、Queue

Queue适用范围:单线程的队列,Queue是最简单的队列的一个实现,但是对于多线程的情况它就显得捉襟见肘了,因为它不是线程安全的,下面粗略的写一下用法,这个Demo也是通过参考资料里摘抄下来的:

 Queue<string> messageQueue = new Queue<string>();//创建队列

    messageQueue.Enqueue("Hello");//向队列里添加元素

    messageQueue.Enqueue("World!")

    Console.WriteLine(messageQueue.Dequeue());//从队列里取出元素

    Console.WriteLine(messageQueue.Dequeue());

二、ConcurrentQueue

ConcurrentQueue很好的解决了Queue的线程不安全的问题,所以它是线程安全,它的应对场景就是多线程了,下面上代码:

   ConcurrentQueue<string> concurrentQueue = new ConcurrentQueue<string>();//创建实例

    concurrentQueue.Enqueue("Hello");//向队列里添加元素

    concurrentQueue.Enqueue("World!");

    while(concurrentQueue.TryDequeue(out message))//c'v取出元素

    {

        Console.WriteLine(message);

    }

三、BlockingCollection

BlockingCollection属于功能最强大的一个队列,它不仅对于线程是安全的,而且它还可以定义队列中最多可以有多少个元素,应用场景比如秒杀活动等。下面上代码:

 BlockingCollection<string> blockingCollection = new BlockingCollection<string>(2);//创建队列实例,其中2就是代表着此队列中元素个数的最大值

    blockingCollection.Add("Hello");//添加元素到队列中

    blockingCollection.Add("World!");

    blockingCollection.Add("Good");

    blockingCollection.Add("Evening!");

blockingCollection.take();//从队列中取出元素

总结:单线程用Queue,多线程用ConcurrentQueue,多线程又要限制元素个数用BlockingCollection。

写的比较急促,后续持续更新。

参考资料:https://dotnetcoretutorials.com/2018/07/29/queues-in-net-core/

写在最后,经过群主同意,可以把QQ交流群:68827666 发出来,我在这个群里,不是管理也不是群主,感兴趣可以进群交流。

相关文章

  • netCore当中的队列Queue、ConcurrentQueu

    队列Queues,是一种遵循先进先出的原则的集合,在.netCore中微软给我们提供了很多个类,就目前本人所知的有...

  • Java—Queue队列详解

    Queue Queue队列介绍   Queue是用于模拟队列的,啥叫队列?队列就是排队的意思,比如排队结账,先进入...

  • Java—Queue队列详解(Deque/PriorityQue

    Queue Queue队列介绍   Queue是用于模拟队列的,啥叫队列?队列就是排队的意思,比如排队结账,先进入...

  • 循环队列的实现方法1

    设:队列长度是QUEUE_LENGTH队列数组是queue[QUEUE_LENGTH]队列头索引是head队列尾索...

  • Queue模块

    一、class Queue.Queue 类 Queue类表示使用FIFO队列 Queue.qsize()返回队列的...

  • 多线程GCD

    1:GCD 创建队列: 串行队列: dispatch_queue_t queue=dispatch_queue_c...

  • 第三周_总结

    队列创建一个队列:queue_obj = queue.Queue(maxsize=30)maxsize :表示允许...

  • GCD 多线程的使用

    1.串行队列 1.1串行队列创建 dispatch_queue_t queue = dispatch_queue_...

  • GCD

    dispatch_queue_t:线程、队列dispatch_queue_create(派发队列)派发队列分为两种...

  • Java - Queue与Deque的介绍与区别

    Queue是简单的FIFO队列,Deque继承Queue实现双端队列。下面依次介绍Queue与Deque。 1. ...

网友评论

      本文标题:netCore当中的队列Queue、ConcurrentQueu

      本文链接:https://www.haomeiwen.com/subject/yqgikctx.html