Ted's Blog



浅谈 进程、线程和协程的区别和联系

本章围绕的主题是 进程、线程和协程 在中高级的面试中基本上都会被问到,接下来就分析讲解一下其中的区别和联系

一、进程

这个词对于程序员来说在熟悉不过了,在工作中总会说到多开几个脚本程序来跑,为的是加快任务的执行效率和处理速度

每次执行一个程序脚本系统都会在内存空间内形成一个独立内存体(俗称给程序分配内存),这个内存体有自己独立的地址空间和自己的堆,上级挂靠单位是操作系统,操作系统会以进程为单位分配系统资源,进程是系统资源分配的最小单位

二、线程

这个词在信息采取抓取的时候也会时常听到,例如利用Python语言来实现多线程爬虫

首先我们先弄明白线程是什么?线程会被称为轻量级进程(Lightweight Process,LWP),是操作系统调度(CPU调度)执行的最小单位

三、进程和线程的区别与联系

区别:

1、进程是系统资源分配的最小单位(基础单位);线程是系统调度和分配的最小单位(基础单位)

2、进程之间可以并发执行,在同一个进程下的多个线程也可以并发执行

3、进程是拥有资源的一个独立单位,线程不拥有资源,但是可以访问隶属于进程的资源

4、在创建和撤销进程时。系统会对资源进行分配和回收,开销要大于线程,但是进程有自己的独立地址空间一个进程崩溃后,在保护模式下不会对其他进程造成影响;而线程只是一个进程中的不同执行路径,线程有自己的堆栈和局部变量但是没有自己的独立地址空间当一个线程挂掉的时候其他线程也会挂掉受到影响(诛九族);所以收多进程程序要比多线程程序健壮,但是进程切换的时候资源耗费较大,效率要差一些

联系:

1、一个线程只属于一个进程,一个进程可以有多个线程,但至少有一个线程

2、资源分配给进程,同一进程下的所有线程共享进程所有资源

3、处理机分给线程,真正在处理机上运行的是线程

4、线程在执行过程中,需要协作同步,不同进程的线程要利用消息通信的办法实现同步

四、协程

协程,是一种比线程更加轻量级的存在,协程不被操作系统内核所管理,而是完全由程序所控制,这样带来的好处是性能得到了大幅度提成,不会像线程切换那样消耗资源

协程的特点在于是一个线程执行,那和多线程比,协程有何优势?

1、协程切换是由程序自身控制的,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势越明显

2、不需要多线程的锁机制:因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多


参考图:





引用:https://blog.csdn.net/daaikuaichuan/article/details/82951084


分享:

评论列表

笔名  :  爱你的男人

2021-04-29 15:40:31

如果爱,请深入


写评论


Contact ME

github:https://github.com/tebie6

email:liumingyuphp@163.com

友情链接

无敌我大鑫哥:http://dream128.cn