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); } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
2022-09-29 C#中对象与JSON字符串互相转换的三种方式
2022-09-29 网络(NET)帮助类
2022-09-29 Web操作帮助类
2022-09-29 Cache缓存帮助类