iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#多线程处理多个队列数据的方法
  • 301
分享到

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

2024-04-02 19:04:59 301人浏览 独家记忆
摘要

概述 多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性

概述

多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。

队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。

比如平常我们在处理定时任务的时候,假设就一台机器,我们不可能单线程一条一条数据的去跑,这时候就需要提高机器资源的利用率。

下面我们来介绍下,如何实现多线程+队列以提高并发处理能力。

代码实现

1、定义线程数threadNum和队列queues


/// <summary> 
        /// 线程总数 
        /// </summary> 
        private int threadNum = 4; 
 
        /// <summary> 
        /// 总数 
        /// </summary> 
        private int totalCount = 0; 
 
        /// <summary> 
        /// 已处理 
        /// </summary> 
        private int index = 0; 
 
        /// <summary> 
        /// 队列 
        /// </summary> 
        private ConcurrentQueue<AssetRepayment> queues = new ConcurrentQueue<AssetRepayment>(); 

2、定义线程列表,往线程添加数据


public void SubDeTransaction() 
        { 
            var list = new List<AssetRepayment>(); 
            for (int i = 0; i < 1000; i++) 
            { 
                list.Add(new AssetRepayment() { Title = i.ToString() + "---" + Guid.NewGuid().ToString() }); 
            } 
 
            if (list == null || list.Count() == 0) 
            { 
                Console.WriteLine("没有可执行的数据"); 
                return; 
            } 
            totalCount = list.Count; 
            Console.WriteLine("可执行的数据:" + list.Count() + "条"); 
            foreach (var item in list) 
            { 
                queues.Enqueue(item); 
            } 
            List<Task> tasks = new List<Task>(); 
            for (int i = 0; i < threadNum; i++) 
            { 
                var task = Task.Run(() => 
                { 
                    Process(); 
                }); 
                tasks.Add(task); 
            } 
            var taskList = Task.Factory.ContinueWhenAll(tasks.ToArray(), (ts) => 
            { 
            }); 
            taskList.Wait(); 
        } 

3、对线程数进行限制 for (int i = 0; i < threadNum; i++)


var taskList = Task.Factory.ContinueWhenAll(tasks.ToArray(), (ts) => 
            { 
            }); 
            taskList.Wait(); 

4、从队列取出数据进行业务处理


private void Process() 
        { 
            while (true) 
            { 
                var currentIndex = Interlocked.Increment(ref index); 
                AssetRepayment repayId = null; 
                var isExit = queues.TryDequeue(out repayId); 
                if (!isExit) 
                { 
                    break; 
                } 
                try 
                { 
                    Console.WriteLine(repayId.Title); 
 
                    Console.WriteLine(string.FORMat(" 共{0}条 当前第{1}条", totalCount, currentIndex)); 
                } 
                catch (Exception ex) 
                { 
                    Console.WriteLine(ex); 
                } 
            } 
        } 

运行测试

代码地址

https://gitee.com/conanOpenSource_admin/Example

到此这篇关于C#多线程处理多个队列数据的方法的文章就介绍到这了,更多相关C#多线程处理多个队列数据的方法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C#多线程处理多个队列数据的方法

本文链接: https://www.lsjlt.com/news/127954.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#多线程处理多个队列数据的方法
    概述 多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性...
    99+
    2024-04-02
  • 如何使用C#多线程处理多个队列数据
    这篇文章主要介绍如何使用C#多线程处理多个队列数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!概述多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬...
    99+
    2023-06-15
  • c#多线程处理多个数据的方法
    在C#中,可以使用多线程来同时处理多个数据,以提高程序的性能和响应能力。下面是几种常用的方法:1. 使用`Thread`类:通过创建...
    99+
    2023-08-18
    c#
  • c# 多线程处理多个数据的方法
    目录概述 代码实现 代码地址 概述 多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多...
    99+
    2024-04-02
  • c#多线程怎么处理多个数据
    处理多个数据的多线程方法有多种,以下是其中的一些常见方法:1. 并行循环:使用Parallel类的For、ForEach或Invok...
    99+
    2023-08-18
    c#
  • 怎么在c#中利用多线程处理多个数据
    本篇文章为大家展示了怎么在c#中利用多线程处理多个数据,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。概述多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多...
    99+
    2023-06-14
  • java多线程队列的使用方法是什么
    在Java中,可以使用BlockingQueue来实现多线程队列。BlockingQueue是一个线程安全的队列,它提供了put()...
    99+
    2023-10-24
    java
  • php多线程处理大数据的方法是什么
    在PHP中,有几种方法可以实现多线程处理大数据:1. 使用`pcntl`扩展:PHP的`pcntl`扩展提供了一些函数来创建和管理进...
    99+
    2023-09-27
    php
  • java多线程批量处理数据的方法是什么
    Java中处理批量数据的方法有以下几种:1. 使用线程池:创建一个线程池,将任务拆分为多个子任务,然后将子任务交给线程池中的线程进行...
    99+
    2023-09-27
    java
  • qt多线程处理大量数据的方法是什么
    在Qt中,处理大量数据的方法包括以下几种:1. 使用Qt的多线程框架:Qt提供了QThread类和QtConcurrent命名空间,...
    99+
    2023-09-22
    qt
  • C#多线程的ResetAbort()方法
    一、简介 Abort方法可以通过跑出ThreadAbortException异常中止线程,而使用ResetAbort方法可以取消中止线程的操作,下面通过代码演示使用 ResetAbo...
    99+
    2024-04-02
  • C#多线程的Join()方法
    一、简介 Join方法主要是用来阻塞调用线程,直到某个线程终止或经过了指定时间为止。官方的解释比较乏味,通俗的说就是创建一个子线程,给它加了这个方法,其它线程就会暂停执行,直到这个线...
    99+
    2024-04-02
  • C#多线程系列之线程完成数
    解决一个问题 假如,程序需要向一个 Web 发送 5 次请求,受网路波动影响,有一定几率请求失败。如果失败了,就需要重试。 示例代码如下: class Program ...
    99+
    2024-04-02
  • php多线程如何处理大数据
    在PHP中实现多线程处理大数据通常可以通过使用多线程扩展或者多进程来实现。以下是一种基本的实现方法: 使用多线程扩展:PHP中有一...
    99+
    2024-04-02
  • TensorFlow多线程输入数据处理框
    参考书 《TensorFlow:实战Google深度学习框架》(第2版) 一个简单的程序来生成样例数据。 #!/usr/bin/env python # -*- coding: UTF-8 -*- # coding=utf-8 ...
    99+
    2023-01-30
    数据处理 多线程 TensorFlow
  • JAVA多线程处理for循环数据
    对for循环内数据启用多线程执行,主线程与子线程无先后顺序 public static void main(String[] args) throws InterruptedException...
    99+
    2023-09-14
    java jvm 开发语言
  • python中队列基本操作和多线程队列的示例分析
    这篇文章给大家分享的是有关python中队列基本操作和多线程队列的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、队列基本操作from queue import Queue...
    99+
    2023-06-29
  • java 多线程处理大量并发数据
    Java中多线程是一种处理数据的常见方式,它可以同时执行多个线程以提高程序的性能和效率。下面是一个使用多线程处理数据的示例代码: public class DataProcessor { pub...
    99+
    2023-09-07
    java 开发语言
  • C#多线程之线程中止Abort()方法
    一、简介 Abort()方法用来终止线程,调用此方法强制停止正在执行的线程,它会抛出一个ThreadAbortException异常从而导致目标线程的终止。 二、代码 cla...
    99+
    2024-04-02
  • 怎么用php多线程处理大数据
    在PHP中,可以使用多种方法来处理大数据,其中包括使用多线程的方法。下面是一个示例,演示如何使用PHP多线程处理大数据: ...
    99+
    2023-10-22
    php 大数据
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作