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

 

上一篇:自动化测试系列(三)|UI测试


下一篇:Java学习之Java自动化工具有哪些