zoukankan      html  css  js  c++  java
  • .NET C# 泛型队列

    1.QueueHelper

    using System.Collections.Concurrent;
    using System.Runtime.CompilerServices;

    namespace WindowsFormsServer.Helper
    {
        public static class QueueHelper<T> where T : class
        {
            private static ConcurrentQueue<StrongBox<T>> _queue;

            public static ConcurrentQueue<StrongBox<T>> Queue
            {
                get { return _queue ?? (_queue = new ConcurrentQueue<StrongBox<T>>()); }
            }

            public static void AddQueue(T t)
            {
                if (_queue == null)
                    _queue = new ConcurrentQueue<StrongBox<T>>();
                _queue.Enqueue(new StrongBox<T>(t));
            }

            public static T DealQueue()
            {
                if (_queue == null)
                    _queue = new ConcurrentQueue<StrongBox<T>>();
                if (_queue.Count > 0)
                {
                    StrongBox<T> t;
                    if (_queue.TryDequeue(out t)) return t.Value;   
                }
                return null;
            }

            public static void EmptyQueue()
            {
                if (_queue == null)
                    _queue = new ConcurrentQueue<StrongBox<T>>();
                StrongBox<T> t;
                while(_queue.TryDequeue(out t))
                    t.Value = default(T);
            }

        }
    }
    2.使用方式:

    //①.入队列

    List<T> ts = new List<T>();

    xxx //此处批量为ts集合赋值

    foreach(var t in ts){

    QueueHelper<T>.AddQueue(t);//入队列

    }

    //②.出队列

    while(QueueHelper<T>.Queue.Count>0){

    T tempT = QueueHelper<T>.DealQueue();

    xxx //业务代码处理tempT

    }

  • 相关阅读:
    [Bada开发]基于bada1.0的5种控件介绍[待续]
    [Bada开发]API官方学习2-风格
    [Bada开发]HelloWorld篇
    [Bada开发]初步入口函数介绍
    [Bada开发]使用共享库
    [Bada开发]使用静态库
    [Bada开发]OpenGL ES 2.0程序 创建简单3D图形
    [Bada开发]播放实时rtsp流
    剑指offer-删除链表中重复的结点
    剑指offer-构建乘积数组
  • 原文地址:https://www.cnblogs.com/jeff151013/p/11739258.html
Copyright © 2011-2022 走看看