当前位置: 首页 > news >正文

C#实现多线程的几种方式

前言

多线程是C#中一个重要的概念,多线程指的是在同一进程中同时运行多个线程的机制。多线程适用于需要提高系统并发性、吞吐量和响应速度的场景,可以充分利用多核处理器和系统资源,提高应用程序的性能和效率。

多线程常用场景

  • CPU 密集型任务.

  • I/O 密集型任务.

  • 并发请求处理.

  • 大数据处理等.

什么是进程?

进程(Process)是计算机中的一个执行中的程序,它是对正在运行的程序的抽象。一个进程包括了程序的代码、数据、堆栈以及其他操作系统所需的资源。

什么是线程?

线程(Thread)是进程中的一个执行单元,一个进程可以包含多个线程,它们共享进程的资源,但拥有独立的执行流程。

使用 Thread 类

        public static void ThreadMethod(){var newThread = new Thread(WorkerMethod);newThread.Start();for (int i = 0; i < 8; i++){Console.WriteLine($"ThreadMethod 主线程开始工作:{i}");Thread.Sleep(100);}}private static void WorkerMethod(){for (int i = 0; i < 8; i++){Console.WriteLine($"WorkerMethod 辅助线程开始工作:{i}");Thread.Sleep(100);}}

使用 ThreadPool 类

        public static void ThreadPoolMethod(){ThreadPool.QueueUserWorkItem(o => WorkerMethod());for (int i = 0; i < 8; i++){Console.WriteLine($"ThreadPoolMethod 主线程开始工作:{i}");Thread.Sleep(100);}}private static void WorkerMethod(){for (int i = 0; i < 8; i++){Console.WriteLine($"WorkerMethod 辅助线程开始工作:{i}");Thread.Sleep(100);}}

使用 Task 类

        public static void TaskMethod(){Task.Run(() => WorkerMethod());for (int i = 0; i < 8; i++){Console.WriteLine($"TaskMethod 主线程开始工作:{i}");Task.Delay(100).Wait();}}private static void WorkerMethod(){for (int i = 0; i < 8; i++){Console.WriteLine($"WorkerMethod 辅助线程开始工作:{i}");Thread.Sleep(100);}}

使用 Parallel 类

        public static void ParallelMethod(){Parallel.Invoke(WorkerMethod, WorkerMethodOther1, WorkerMethodOther2);}private static void WorkerMethod(){for (int i = 0; i < 8; i++){Console.WriteLine($"WorkerMethod 辅助线程开始工作:{i}");Thread.Sleep(100);}}private static void WorkerMethodOther1(){for (int i = 0; i < 8; i++){Console.WriteLine($"WorkerMethodOther1 辅助线程开始工作:{i}");Thread.Sleep(100);}}private static void WorkerMethodOther2(){for (int i = 0; i < 8; i++){Console.WriteLine($"WorkerMethodOther2 辅助线程开始工作:{i}");Thread.Sleep(100);}}

拾遗补漏合集

在这个快速发展的技术世界中,时常会有一些重要的知识点、信息或细节被忽略或遗漏。《C#/.NET/.NET Core拾遗补漏》专栏我们将探讨一些可能被忽略或遗漏的重要知识点、信息或细节,以帮助大家更全面地了解这些技术栈的特性和发展方向。

文章转载自:追逐时光者

原文链接:https://www.cnblogs.com/Can-daydayup/p/18185545

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

http://www.lryc.cn/news/347211.html

相关文章:

  • C语言—控制语句
  • 三. TensorRT基础入门-ONNX注册算子的方法
  • 01、什么是ip、协议、端口号知道吗?计算机网络通信的组成是什么?
  • 答题套路2 阅读理解 说明文某个词是否能去掉
  • Pytorch图像分类模型模型实时在线验证代码
  • Java高并发场景(银行转账问题)
  • TypeScript 工具类型
  • [Kotlin]创建一个私有包并使用
  • 鸿蒙应用开发者高级认证指南及参考资料整理(含详细参考答案)
  • 数据匿名化技术
  • HTML学习笔记汇总
  • 初始JSVMP
  • 【机器学习数据可视化-04】Pyecharts数据可视化宝典
  • 通过 Java 操作 redis -- zset 有序集合基本命令
  • 力扣 516. 最长回文子序列 python AC
  • 数据库编程
  • (docker)进入容器后如何使用本机gpu
  • java基础知识点总结2024版(8万字超详细整理)
  • vue中使用element的i18n语言转换(保姆式教程-保证能用)
  • 01 设计模式--单例模式
  • css backdrop-filter 实现背景滤镜
  • AR人脸道具SDK解决方案,实现道具与人脸的自然融合
  • Windows安装RabbitMQ教程(附安装包)
  • 这个问题无人能解,菜鸟勿进
  • 揭秘高效引流获客的艺术:转化技巧大公开
  • 【Unity 鼠标输入检测】
  • LeetCode hot100-33-Y
  • C++和Python通信引文道路社评电商大规模行为图结构数据模型
  • 单片机-点亮第一盏灯
  • C++组合类