C# 多线程(一) Thread
2022/2/17 9:11:41
本文主要是介绍C# 多线程(一) Thread,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
本文主要涉及:
C#的线程(System.Threading.Thread)
线程池(System.Threading.ThreadPoll)
并行库(System.Threading.Tasks.Task)
异步(asnc await)
并发集合(System.Collections.Concurrent)
并行库(System.Threading.Tasks. Parallel)
简介
本文章使用的IDE为Visual Studio 2022,操作系统为Windows11。
在介绍C#多线程编程之前,需要简单的了解一下相关的名词。
操作系统
操作系统(operating system,简称OS)是管理计算机硬件与软件资源的计算机程序。所有的其他程序都要运行在操作系统之上。
CPU
CPU是计算机的运算和控制核心。计算机系统中所有软件层的操作,最终都将通过指令集映射为CPU的操作。
进程(Process)
简单来说一个进程就是一个应用程序。是操作系统进行资源(包括CPU、内存、磁盘IO等)分配的最小单位。
线程(thread)
线程是进程的一部分,是CPU执行进程的最小调度单位,。一个进程(程序)有一个或多个线程,多个线程并行执行不同的任务,所有线程共享该进程的资源。
进程与线程的区别
进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。
多线程
单核CPU上运行多线程程序, 同一时间只能运行一个线程, 操作系统使CPU在不同的线程上切换,,操作系统给每个线程分配时间片来执行, 每个时间片极短, 看起来像是多个线程同时运行。
多线程可以同时完成多个任务;可以使程序的响应速度更快;但是线程切换也会增加系统资源的开销,增加内存的占用。
使用Thread执行多线程
在C#中,线程是使用Thread类处理的,该类在System.Threading命名空间中。
使用Thread类创建一个对象t,
并指明将要调用的方法method()
使用new Thread(PrintNumbers); 指明在线程中执行的方法method()
使用t.Start()来启动线程。
具体代码如下所示:
1 internal void Do() 2 { 3 Thread t = new Thread(PrintNumbers); //创建一个Thread类的实例 4 t.Start();//启动线程,在线程t中执行PrintNumber 5 6 PrintNumbers();//在主线程执行PrintNumber 7 } 8 9 private void PrintNumbers() 10 { 11 Console.Write("开始..."); 12 for (int i = 1; i < 10; i++) 13 { 14 Console.WriteLine(i); 15 Thread.Sleep(TimeSpan.FromSeconds(0.3)); 16 } 17 Console.WriteLine("结束..."); 18 }
程序执行时,PrintNumbers()在主线程和另外一个线程t中同时执行。输出结果如图所示,1~10的数字会交叉出现。运行结果如下图所示:
这篇关于C# 多线程(一) Thread的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#