



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第C#多线程处理多个队列数据的方法多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。
队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。
比如平常我们在处理定时任务的时候,假设就一台机器,我们不可能单线程一条一条数据的去跑,这时候就需要提高机器资源的利用率。
下面我们来介绍下,如何实现多线程+队列以提高并发处理能力。
代码实现
1、定义线程数threadNum和队列queues
///summary
///线程总数
////summary
privateintthreadNum=4;
///summary
///总数
////summary
privateinttotalCount=0;
///summary
///已处理
////summary
privateintindex=0;
///summary
///队列
////summary
privateConcurrentQueueAssetRepaymentqueues=newConcurrentQueueAssetRepayment
2、定义线程列表,往线程添加数据
publicvoidSubDeTransaction()
varlist=newListAssetRepayment
for(inti=0;i1000;i++)
list.Add(newAssetRepayment(){Title=i.ToString()+"---"+Guid.NewGuid().ToString()});
if(list==null||list.Count()==0)
Console.WriteLine("没有可执行的数据");
return;
totalCount=list.Count;
Console.WriteLine("可执行的数据:"+list.Count()+"条");
foreach(variteminlist)
queues.Enqueue(item);
ListTasktasks=newListTask
for(inti=0;ithreadNum;i++)
vartask=Task.Run(()=
Process();
});
tasks.Add(task);
vartaskList=Task.Factory.ContinueWhenAll(tasks.ToArray(),(ts)=
});
taskList.Wait();
3、对线程数进行限制for(inti=0;ithreadNum;i++)
vartaskList=Task.Factory.ContinueWhenAll(tasks.ToArray(),(ts)=
});
taskList.Wait();
4、从队列取出数据进行业务处理
privatevoidProcess()
while(true)
varcurrentIndex=Interlocked.Increment(refindex);
AssetRepaymentrepayId=null;
varisExit=queues.TryDequeue(outrepayId);
if(!isExit)
break;
try
Console.WriteLine(repayId.Title);
Console.WriteLine(string.Format("共{0}条当前第{1}条",totalCount,currentIndex));
ca
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国水上电动浮板、水下推进器行业市场发展现状及发展趋势研究报告
- 2025-2030年中国欧洲橄榄油行业市场现状分析及竞争格局与投资发展研究报告
- 2025-2030年中国模拟交叉点开关行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国植物肾素行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国树脂工艺品行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国果冻布丁行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国材料加工设备行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国机器人码垛机行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国有机食品吧行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国月牙肋钢筋行业市场现状供需分析及投资评估规划分析研究报告
- 《零售促销策略》课件
- 美甲店工作分工合同协议
- 第15课 明朝的统治 课件 统编版七年级历史下册
- 水文学试题题库及答案
- 天一大联考2024-2025学年(下)高三第二次四省联考★物理+答案
- 2025天津东疆综合保税区管理委员会招聘10人笔试参考题库附带答案详解
- 法院书记员招聘2023年笔试考试必做题有答案
- 2024年北京大兴国际机场临空经济区幼儿园招聘教师考试真题
- (三模)乌鲁木齐地区2025年高三年级第三次质量监测理科综合试卷(含答案)
- 玉盘二部合唱简谱
- 【MOOC】救护与救援-福建农林大学 中国大学慕课MOOC答案
评论
0/150
提交评论