首页 > 代码库 > C#之线程基础概述
C#之线程基础概述
1.概述:
每个正在操作系统上运行的应用程序都是一个进程,一个进程可以包括一个或多个进程。线程是操作系统分配处理器时间的基本单元。
在进程中可以有多个线程同时执行代码,每个线程都维护异常处理程序、调度优先级和一组系统用于在调度该线程前保存线程上下文的结构。
线程上下文包括为使线程在线程的宿主进程地址空间中无缝地执行所需的所有信息,包括线程的CPU寄存器组和堆栈。
线程是进程中的执行流程,一个进程中可以同时包括多个线程,每个线程也可以得到一小段程序的执行时间,这样一个进程就可以具有多个并发执行的线程。在单线程中,程序代码按调用顺序依次往下执行。如果需要一个进程同时完成多段代码的操作,就需要产生多线程。
虽然多线程看起来像是同时执行,但实际上在同一时间点上只有一个线程被执行,只是线程之间切换的很快,给人一种错觉而已。
2.线程的生命周期
线程具有生命周期,包含3个状态:出生状态,就绪状态,运行状态
出生状态--用户创建线程时处于的状态,使用该线程实例调用Start方法前,线程都处于 出生状态
就绪状态--用户调用Start方法后,线程就处于就绪状态(也可以称作可执行状态)
运行状态--线程得到系统资源后就进入运行状态
一旦线程进入就绪状态,就会在就绪和执行状态下辗转,同时也可能进入等待,阻塞,休眠和死亡状态
(1)运行状态下线程调用Thread类中的Suspend方法时,线程处于等待状态
(2)进入等待状态的线程必须调用Thread类中的Resume方法才能被唤醒进入就绪状态
(3)线程调用Thread类中的Sleep方法是,线程进入休眠状态
(4)线程在运行状态下发出输入/输出请求,该线程将进入阻塞状态,在其等待输入输出结束时,线程进入就绪状态,对于阻塞状态的线程来说,即使系统资源空闲,线程依然不能回到执行状态
(5)当线程执行完毕时,进入死亡状态
下面以一个图片来说明: