跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

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

目录前言多线程常用场景什么是进程?

什么是线程?

使用 Thread 类使用 ThreadPool 类使用 Task 类使用 Parallel 类前言多线程是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#实现多线程的几种方式小结的文章就介绍到这了,更多相关C#实现多线程内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:c#多线程之间的排他锁的实现基于C#实现的轻量级多线程队列图文详解C# FileStream实现多线程断点续传C# 文件上传下载(Excel导入,多线程下载)功能的实现代码c#中Winform实现多线程异步更新UI(进度及状态信息)

相关文章