当前位置: 首页 > 科技观察

C#多线程处理多队列数据方法

时间:2023-03-18 22:38:59 科技观察

本文转载自微信公众号《后端Q》,作者柯南。转载请联系后台Q公众号。概述多线程是指从软件或硬件上实现多个线程并发执行的技术。具有多线程能力的计算机由于硬件的支持,可以一次执行多个线程,从而提高整体处理性能。具有此功能的系统包括对称多处理器、多核处理器和芯片级多处理或同步多线程处理器。在一个程序中,这些独立运行的程序片段被称为“线程”(Thread),使用它进行编程的概念被称为“多线程”。队列(Queue)代表一个先进先出的对象集合。当您需要对项目进行先进先出访问时,将使用队列。当你向列表中添加一个项目时,它被称为入队,当你从列表中删除一个项目时,它被称为出队。比如我们平时处理定时任务的时候,假设只有一台机器,我们不能在单线程中一个一个的跑数据。这时候就需要提高机器资源的利用率。下面介绍一下如何实现多线程+队列来提高并发处理能力。代码实现1.定义线程数threadNum和queues///

///线程总数///privateintthreadNum=4;//////总数///privateinttotalCount=0;//////processed///privateintindex=0;//////queue///privateConcurrentQueuequeues=newConcurrentQueue();2.定义线程列表,向线程添加数据()+"---"+Guid.NewGuid().ToString()});}if(list==null||list.Count()==0){Console.WriteLine("无可执行数据");return;}totalCount=list.Count;Console.WriteLine("可执行数据:"+list.Count()+"item");foreach(variteminlist){queues.Enqueue(item);}Listtasks=newList();for(inti=0;i{Process();});tasks.Add(task);}vartaskList=Task.Factory.ContinueWhenAll(任务。ToArray(),(ts)=>{});taskList.Wait();}3.限制线程数for(inti=0;i{});taskList.Wait();4.从队列中取出数据进行业务处理try{Console.WriteLine(repayId.Title);Console.WriteLine(string.Format("共有{0}篇当前文章{1}",totalCount,currentIndex));}catch(Exceptionex){Console.WriteLine(ex);}}}运行测试代码地址https://gitee.com/conanOpenSource_admin/Example