zoukankan      html  css  js  c++  java
  • 蛙蛙推荐:写了一个简单的延迟队列

    写了一个简单的延迟队列,用于处理短时大量请求的情况,可以设置队列处理Handler,每次取队列的时间间隔,以及每次取多少队列项进行处理。

    队列处理是同步执行。

    public class LazyQueue<T>
    {
    public LazyQueue(Action<T> handler, int inteval, int onecount)
    {
    _handler
    = handler;
    _inteval
    = inteval;
    _onecount
    = onecount;
    _t
    = new Thread(ThreadProc);
    _t.Name
    = "LazyQueue";
    _t.IsBackground
    = true;
    }
    public void EnQueue(T item)
    {
    lock (_queue)
    {
    _queue.Enqueue(item);
    }
    }
    public void Start()
    {
    _t.Start();
    }

    private void ThreadProc(object state)
    {
    while (true)
    {
    try
    {
    List
    <T> tempItems = new List<T>(_onecount);
    lock (_queue)
    {
    for (int i = _onecount - 1; i >= 0; i--)
    {
    if (_queue.Count > 0)
    {
    tempItems.Add(_queue.Dequeue());
    }
    }
    }
    tempItems.ForEach(_handler);

    }
    catch (Exception ex)
    {
    System.Diagnostics.Trace.TraceError(
    "ThreadProc error:{0}", ex);
    }

    Thread.Sleep(_inteval);
    }
    }

    private Queue<T> _queue = new Queue<T>();
    private Action<T> _handler = null;
    private int _inteval = 0;
    private int _onecount = 0;
    private Thread _t = null;
    }
  • 相关阅读:
    设计师用的几个网站
    微信小程序开发框架
    数据模型
    数据库系统
    大话设计模式读书笔记(一)
    关于数据统计时的效率
    orcale同一条语句运行速度差异问题
    使用plspl创建orcale作业
    正则表达式(一)
    oracle游标小试
  • 原文地址:https://www.cnblogs.com/onlytiancai/p/2099833.html
Copyright © 2011-2022 走看看