当前位置: 首页 > article >正文

多进程和多线程

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

1、并发

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

2、多进程

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

3、多线程

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

4、进程和线程的关系

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

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

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

相关文章:

  • 全面解析msvcr100.dll丢失的5种解决方法,快速解决dll丢失问题
  • Linux嵌入式定义四个缓存区,Linux文件缓冲区详解
  • Linux服务器本地POST接口测试
  • 【正点原子FPGA连载】第二十章IP核之FIFO实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1
  • _beginthreadex 和 _beginthread 的区别
  • 在java中调用weka聚类方法并显示相应的类标签+weka中创建arff数据
  • 企业安全意识必修课——修改远程桌面登录端口避免恶意扫描入侵
  • JSP | 简易购物车的实现
  • HTC (Desire V)T328W ROOT 教程 及关闭充电动画
  • 传奇单机版就是自己在家里架设一个
  • 基于SpringBoot+Vue酒店订房系统的设计与实现
  • 关于代理服务器的原理及用法
  • svn找不到节点_章泽天公园甩鞭抽陀螺,现场图曝光:生活不易,全靠自己找乐趣...
  • BUCK电路工作原理以及参数设计
  • 这篇文章带你了解一下WAP建站。
  • Scala 的那些奇怪的符号 (一)
  • 用户行为分析的背景以及几种模型分析、实例分析——淘宝用户行为分析
  • ASP进行数据库查询时SQL语句的几种特殊用法
  • 在线网址URL生成二维码的API接口
  • 一个Springboot项目页面中CSS,JS文件加载失败的问题
  • 包括遗传算法在内的现代优化算法简介
  • 从零开始的Android学习之路:一、AndroidStudio的安装以及安卓开发环境的配置
  • 开源项目 `blog` 使用教程
  • datagridview设置选中行_pycharm常用快捷键和设置
  • 智能ABC输入法使用技巧
  • 网络安全入门教程(非常详细)从零基础入门到精通,看完这一篇就够了。_网络安全教程
  • KVM 介绍
  • python编程有什么用处,python编程主要学什么
  • 风云决动画好看吗??
  • FreeTextBox使用详解(FTBv3-1-6)