首页/文章/ 详情

程序猿 | 什么是线程?

1年前浏览832
概念  

早期的操作系统,只有进程的概念,进程就是程序执行和系统的资源调度最小单位。每个程序启动一次,就会启动一个进程,在系统中就会占用一块内存,各个内存之间时相互隔离的,不能互相通信。这就是CATIA软件在同一个会话中,可以在不同文件之间传递数据,但是在两个会话窗口中就不能传递了的原因。网上有个段子说得好,你暴风影音是一个程序,但是打开两个窗口就是不同的进程,一个进程里装着饭岛爱,不耽误另外一个进程装上苍井空……

计算机的发展极其迅猛,程序也做得越来越复杂,CPU面临的压力越来越大,进程之间的切换的开销逐渐难以满足复杂程序的需求……

线程因此登场,通常的定义是:线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。一个进程可以在必要的时候被拆分为多个线程,各个线程之间共享程序的内存空间(也就是所在进程的内存空间)。

下图是从网上拷贝过来,用以说明线程与进程之间的关系。

一个标准的线程由线程ID,当前指令指针PC,寄存器和堆栈组成。

进程由内存空间(代码,数据,进程空间,打开的文件)和一个或多个线程组成。


   
   

   
线程和进程区别  

1. 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位

2. 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线

3. 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信号等),某进程内的线程在其他进程不可见

4. 调度和切换:线程上下文切换比进程上下文切换要快得多,对系统资源的冲击也比较小。而且线程彼此分享了大部分核心对象(File Handle)的拥有权,如果使用多重进程,但是不可预期,且测试困难。

总之,线程和进程都是一种抽象的概念,线程是一种比进程还小的抽象,线程和进程都可用于实现并发。


资源调度

大部分操作系统的任务调度是采用时间片轮转的抢占式调度方式,也就是说一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流执行。任务执行的一小段时间叫做时间片,任务正在执行时的状态叫运行状态,任务执行一段时间后强制暂停去执行下一个任务,被暂停的任务就处于就绪状态,等待下一个属于它的时间片的到来。这样每个任务都能得到执行,由于CPU的执行效率非常高,时间片非常短,在各个任务之间快速地切换,给人的感觉就是多个任务在“同时进行”,这也就是我们所说的并发。  
   
END    
每日一句    
大部分人在二三十岁就已经死去了,因为过了这个年龄,他们只是自己的影子,此后的余生则是在模仿自己中度过,更机械,更装腔作势地重复他们在有生之年的所作所为,所思所想,所爱所恨。by 罗曼·罗兰


来源:CATIA模具设计应用
CATIA通信控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-09-29
最近编辑:1年前
恒拱
硕士 签名征集中
获赞 26粉丝 52文章 652课程 1
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈