当前位置:首页 > 科技  > 软件

C#实现多线程的几种方式,你知道几种?

来源: 责编: 时间:2024-05-11 09:21:46 134观看
导读前言多线程是C#中一个重要的概念,多线程指的是在同一进程中同时运行多个线程的机制。多线程适用于需要提高系统并发性、吞吐量和响应速度的场景,可以充分利用多核处理器和系统资源,提高应用程序的性能和效率。多线程常用

前言

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

多线程常用场景

  • CPU 密集型任务.
  • I/O 密集型任务.
  • 并发请求处理.
  • 大数据处理等.

什么是进程?

进程(Process)是计算机中的一个执行中的程序,它是对正在运行的程序的抽象。一个进程包括了程序的代码、数据、堆栈以及其他操作系统所需的资源。tjK28资讯网——每日最新资讯28at.com

图片图片tjK28资讯网——每日最新资讯28at.com

什么是线程?

线程(Thread)是进程中的一个执行单元,一个进程可以包含多个线程,它们共享进程的资源,但拥有独立的执行流程。tjK28资讯网——每日最新资讯28at.com

使用 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);            }        }

图片图片tjK28资讯网——每日最新资讯28at.com

使用 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);            }        }

图片图片tjK28资讯网——每日最新资讯28at.com

使用 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);            }        }

图片图片tjK28资讯网——每日最新资讯28at.com

使用 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);            }        }

图片图片tjK28资讯网——每日最新资讯28at.com

GitHub开源地址

https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetStudy.mdtjK28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-87994-0.htmlC#实现多线程的几种方式,你知道几种?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 一个用Rust编写的开源代码编辑器-Zed:开箱即用的远程协作编程能力

下一篇: .NET Core 8 部署在 IIS 上的详细指南

标签:
  • 热门焦点
Top
Baidu
map