多进程和多线程

在介绍多进程和多线程之前,首先搞清楚一个问题,多进程和多线程解决的是什么问题?或者说为什么需要多进程和多线程?

1、并发

       对于一个程序,如果只有一条执行路径,那么效率将会是非常低的,一个程序往往有多个部分组成,每个模块执行不同的任务,如果让这些任务同时执行,各自完成自己的任务,将会使效率得到大大的提升。

2、多进程

      进程是一个正在执行的程序。对于并发执行,那就不可避免的存在进程的切换,在进程切换时需要记录进程的各种信息:堆栈、打开的资源等等。而这些信息都需要进程去维护,以便进程下一次被调度执行时能从正确的位置开始。每个进程有自己的pcb,pcb中保存着其执行过程中的相关信息。不同进程正是由pcb所区分开的。

3、多线程

       线程的出现是为了解决进程上下文切换复杂的缺点。进程的并发必然需要在进程间进行切换,每个进程有自己独立的地址空间,在切换时需要换入到新的地址空间中执行,因此效率较低。而线程实现了在进程内部并发,解决了一个进程只能干一件事的问题。多个线程之间公用一个进程的地址空间,在切换的时候效率则更高。

4、进程和线程的关系

  1. 一个进程可以有多个线程
  2. 一个线程只能属于一个进程

5、多进程和多线程的比较

  1. 创建和销毁(线程占优):进程的创建需要为每个进程分配地址空间,同样销毁也需要将进程的所有信息清除,消耗较大;线程是公用进程的地址空间,因此不需要重新开辟,因此消耗较小
  2. 切换效率(线程占优):线程的切换不需要地址空间的切换,效率高于进程间切换。
  3. 调度:进程是资源分配的基本单位;线程是cpu调度的基本单位。
  4. 分布式管理(进程占优):进程使用于多核、多机;而线程则只适用于多核,也就意味着多线程只分布在一台主机上。因此在服务器的分布式管理上多进程有绝对优势。
  5. 调式(进程占优):多进程的调式比多线程的调试简单
  6. 稳定性(进程占优):一个进程的死亡一般不会影响到其他进程,而一个线程的死亡会导致同进程中所有线程死亡
  7. 数据共享(线程占优):线程公用进程资源,因此共享数据简单。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值