秋招之路-关于进程、线程、协程的一些见解

网友投稿 888 2022-10-12

秋招之路-关于进程、线程、协程的一些见解

秋招之路-关于进程、线程、协程的一些见解

[图]Thread, process, coroutine

2019-07-03

阅读本文大概需要 5 分钟

前言

进程、线程、协程的概念和区别傻傻分不清?希望这篇文章能帮助你。

1、举一个贴近现实生活的例子

贺老板,想要开个工厂,进行生产某件商品(例如手机壳)。

他需要花一些财力物力制作一条生产线,这个生产线上有很多的器件以及材料,这些所有的为了能够生产手机壳而准备的资源称之为:进程

只有生产线是不能够进行生产的,所以贺老板必须找个工人来进行生产,这个工人能够利用这些材料最终一步步的将手机壳做出来,这个负责具体事情的工人称之为:线程

贺老板为了提高生产率,想到 3 种办法:

(1)在这条生产线上多招些工人,一起来做手机壳,这样效率达到成倍増长。

这就是单进程多线程方式。

(2)贺老板发现,这条生产线上的工人不是越多越好,因为一条生产线的资源以及材料毕竟有限,所以贺老板又花了些财力物力购置了另外一条生产线,然后再招些工人,这样效率又一步提高了。

这就是多进程多线程方式。

(3)有一天,贺老板发现,现在已经有了很多条生产线,并且每条生产线上已经有很多工人了(可以类比于程序是多进程的,每个进程中又有多个线程)。

为了再次提高效率,贺老板做了一个规定:如果某个员工在上班时临时没事或者在等待某些条件(比如等待另一个工人生产完某道工序 之后他才能再次工作),那么这个员工就利用这个时间去做其它的事情,也就是说:如果一个线程等待某些条件,可以充分利用这个时间段去做其它事情。

其实这就是:协程方式。​

2、总结

1. 进程和线程的区别

(1)基本单位

进程是资源分配的基本单位。​

进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态。

PCB 是为了管理进程设置的一个数据结构。是系统感知进程存在的唯一标志。

通常包含如以下的信息:

进程标识符(唯一);进程当前状态,通常同一状态的进程会被放到同一个队列;进程的程序和数据地址;进程资源清单。列出所拥有的除 CPU 以外的资源记录;进程优先级。反应进程的紧迫程度;CPU 现场保护区。记录中断时的 CPU 状态;进程队列的 PCB 的链接字;进程相关的其他信息。如占用 CPU 多长时间等。

所谓的创建进程和撤销进程,都是指对 PCB 的操作。

线程是独立调度的基本单位。​

一个进程中可以有多个线程,它们共享进程资源。

(2)拥有资源

进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问隶属进程的资源。

(3)调度

线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程中的线程切换到另一个进程中的线程时,会引起进程切换。

(4)系统开销

由于创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O 设备等,所付出的开销远大于创建或撤销线程时的开销。类似地,在进行进程切换时,涉及当前执行进程 CPU 环境的保存及新调度进程 CPU 环境的设置,而线程切换时只需保存和设置少量寄存器内容,开销很小。

(5)通信方面

线程间可以通过直接读写同一进程中的数据进行通信,但是进程通信需要借助 IPC。

2. 协程和线程的区别

协程和线程的区别是:协程避免了无意义的调度,由此可以提高性能,但也因此,程序员必须自己承担调度的责任,同时,协程也失去了标准线程使用多 CPU 的能力。

3. 三者的区别

进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。

线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程是的)。

协程和线程一样共享堆,不共享栈,协程由程序员在协程的代码里显示调度。

协程切换任务资源很小,效率高。

多进程、多线程根据 cpu 核数不一样可能是并行的,但是协程是在一个线程中,所以是并发运行。

今天的知识点,你学会了吗?

关于进程、线程、协程,我也是略懂皮毛,有问题,欢迎和我一起交流~

参考:

​​https://github.com/CyC2018/CS-Notes/tree/master/docs/notes​​

认真的人,自带光芒!

点个呗

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot实现阿里云短信发送的示例代码
下一篇:基于电影知识图谱和微信小程序的智能问答系统
相关文章

 发表评论

暂时没有评论,来抢沙发吧~