2021-12-26
- 进程与线程
-
- 进程与线程的区别
- 进程中分多线程的好处
进程与线程
进程与线程的区别
进程:一个程序在执行过程中的动作,类似于按照说明书做菜,说明书是程序,人是cpu,各种原料是输入,人按说明书做菜的全过程就是进程
线程:是进程的一个执行单元,是进程内的调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。
区别:
地址空间:
线程共享本进程的地址空间,而进程之间是独立的地址空间。
资源:
线程共享本进程的资源如内存、I/O、cpu等,不利于资源的管理和保护,而进程之间的资源是独立的,能很好的进行资源管理和保护。
健壮性:
多进程要比多线程健壮,一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。
执行过程:
每个独立的进程有一个程序运行的入口、顺序执行序列和程序入口,执行开销大。
但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,执行开销小。
可并发性:
两者均可并发执行。
切换时:
进程切换时,消耗的资源大,效率高。所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程。
其他:
线程是处理器调度的基本单位,但是进程不是。
进程中分多线程的好处
考虑一个情况,假设用户在一个有800页的文件上第一页删掉一行后,想通知处理进程跳到第600页,这时如果进程中没有多个线程的话,软件会被强制对前600页的格式重新处理,处理完成后才会给用户显式第600页,因为在处理之前程序也不知道第600页的开头在哪里。
这时如果该程序有两个线程,一个是用户交互线程,专门管理与用户的交互,例如记录用户的操作之类的,另一个线程在后台进行格式处理,这样在用户删掉第一页的一行之后,交互线程进入挂起状态,直到用户输入跳转的指令,而后台处理线程就开始处理全文的格式,这样在用户输入跳转指令之前,文件的格式可能就已经处理完毕了,交互进程收到用户指令后可以直接跳转