C#实现任务队列
来源:互联网 发布:阿里云 怎么重装 编辑:程序博客网 时间:2024/05/02 19:53
</pre><pre name="code" class="csharp">
using System;using System.Collections.Generic;using System.Linq;using System.Threading;using System.Text;namespace TaskList{ public class Tasks { private static Queue<Action> m_List; //线程互斥 private static object m_obj = new object(); /// <summary> /// 初始化队列 /// </summary> public Tasks() { if(m_List == null) m_List = new Queue<Action>(); } /// <summary> /// 线程工作的函数 /// </summary> public void ThreadWork() { while (true) { //获取任务 Action work = Pop(); //执行任务 work(); Thread.Sleep(1); } } /// <summary> /// 从任务队列中取出任务 /// </summary> /// <returns></returns> public Action Pop() { Monitor.Enter(m_obj); Action ac = null; try { //当队列有数据,出队.否则等待 if (m_List.Count > 0) { ac = m_List.Dequeue(); } else { Monitor.Wait(m_obj); ac = m_List.Dequeue(); } } finally { Monitor.Exit(m_obj); } return ac; } /// <summary> /// 把任务加入任务队列 /// </summary> public void Push() { Work w = new Work(); //上锁 Monitor.Enter(m_obj); //委托 Action action = new Action(w.RunWork); //把任务加入队列中 m_List.Enqueue(action); //通知等待队列中的线程锁定对象状态的更改。 Monitor.Pulse(m_obj); Monitor.Exit(m_obj); } } public class Work { private static int number; /// <summary> /// 工作函数 /// </summary> public void RunWork() { number++; Console.WriteLine("hello world:" + number.ToString()); } } public class Program { public static void Main() { //加入任务 for (int i = 0; i < 200; i++) { Tasks tast = new Tasks(); tast.Push(); } //开启线程来完成执行任务队列中的任务 for (int i = 0; i < 2; i++) { Tasks t = new Tasks(); Thread th = new Thread(new ThreadStart(t.ThreadWork)); th.Start(); } Console.Read(); } }}
0 0
- C#实现任务队列
- C#任务队列的实现代码
- 利用线程消息队列,实现任务队列
- Android下载任务队列实现
- Android 异步任务队列实现
- 使用Redis实现任务队列
- 多线程任务队列MulitiThreadJob实现
- c#实现优先级队列
- C#实现环形队列
- Linux下Redis+crontab实现任务队列
- C++ 实现线程安全的任务队列
- ZooKeeper分布式队列实现MapReduce任务集成
- C#实现循环顺序队列(队列)
- c#实现链队列(队列)
- C# FluentScheduler 实现任务计划
- C#实现栈和队列
- 用 C# 实现优先队列
- 用 C# 实现优先队列
- 【搜索引擎Jediael开发笔记2】使用HttpClient下载网页至本地文件
- Java解析HTML之HTMLParser使用与详解
- 【搜索引擎Jediael开发笔记3】使用HtmlParser提取网页中的链接
- 学习金字塔
- 【搜索引擎Jediael开发4】V0.01完整代码
- C#实现任务队列
- HtmlParser基础教程
- Qemu虚拟机中挂载NFS
- 【搜索引擎基础知识3】搜索引擎相关开源项目及网站
- 【搜索引擎Jediael开发笔记1】搜索引擎初步介绍及网络爬虫
- 【搜索引擎基础知识2】网络爬虫
- 【搜索引擎基础知识1】搜索引擎基本架构
- String, StringBuilder 与StringBuffer的区别与联系
- 关于serialVersionUID的说明