蛙蛙推荐:写了一个简单的延迟队列
2011-07-07 10:47
344 查看
写了一个简单的延迟队列,用于处理短时大量请求的情况,可以设置队列处理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; }
相关文章推荐
- 蛙蛙推荐:用c#实现一个简单的分布式搜索
- 蛙蛙推荐: 用web服务传递Dataset的一个简单例子
- 一个功能简单的队列模板
- 建立和维护一个简单的PKI系统 推荐
- LMAX Disruptor——一个高性能、低延迟且简单的框架
- 简单题_用两个栈实现队列和用两个队列实现一个栈
- 蛙蛙推荐:编写一个服务监控的软件
- 实现一个简单的无界队列锁
- 蛙蛙推荐:在c#使用IOCP(完成端口)的简单示例
- LMAX Disruptor——一个高性能、低延迟且简单的框架
- 图片延迟加载并等比缩放,一个简单的JQuery插件
- 蛙蛙推荐:在c#使用IOCP(完成端口)的简单示例
- 不到100行代码实现一个简单的推荐系统
- 蛙蛙推荐:写一个主键生成组件(服务)
- 一个简单的基于用户的推荐系统+缓存机制
- mahout评估一个简单的推荐程序
- 蛙蛙推荐:编写一个服务监控及管理的软件
- 【蛙蛙推荐】GridView和ObjectDataSource更新数据的一个Bug
- 蛙蛙推荐:在c#使用IOCP(完成端口)的简单示例
- 蛙蛙推荐:一个程序员2012年技术学习总结