目录

概论

进程VS线程

并发VS并行

多线程VS多进程

总结


概论

程序是为完成特定任务、用某种语言编写的组指令的集合。即指一段静态的代码,静态对象。
进程是程序的次执行过程, 或是正在运行的 一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。
如:运行中的QQ,运行中的MP3播放器
程序是静态的,进程是动态的
进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域
线程,进程可进步细化为线程, 是一个程序内部的一条执行路径.若一个进程同一时间并行执行多个线程, 就是支持多线程的
线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器,线程切换的开销小
一个进程中的多个线程共享相同的内存单元/内存地址空间→它们从同一堆中分配对象,可以访问相同的变量和对象。这就使得线程间通信更简便、高效。但多个线程操作共享的系统资源可能就会带来安全的隐患。

进程VS线程

进程包含线程,一个进程中包含多个线程.
线程是cpu调度和分配的基本单位,进程是操作系统进行资源分配(cpu,内存,硬盘io等)的最小单位.

并发VS并行

并发:一个处理器同时处理多个任务。

并行:多个处理器或者是多核的处理器同时处理多个不同的任务

多线程VS多进程

单核cpu:
实现多进程依靠于操作系统的进程调度算法,比如时间片轮转算法,比如有3个正在运行的程序(即三个进程),操作系统会让单核cpu轮流来运行这些进程,然后一个进程只运行2ms,这样看起来就像多个进程同时在运行,从而实现多进程.
多线程其实是最大限度的利用cpu资源.一个拥有两个线程的进程的执行时间可能比一个线程的进程执行两遍的时间还长一点,因为线程的切换也需要时间.即采用多线程可能不会提高程序的运行速度,反而会降低速度,但是对于用户来说,可以减少用户的响应时间.
多核cpu:
多核cpu是一枚处理器中集成多个完整的计算引擎(内核).
多核cpu和单核cpu对于进程来说都是并发,并不是并行.多cpu可以并行.
但是多核cpu每一个核心都可以独立执行一个线程,所以多核cpu可以真正实现多线程的并行.比如四核可以把线程1234分配给核心1234,如果还有线程567就要等待cpu的调度.线程1234属于并行;如果一会核心1停止执行线程1改为执行线程5,那线程15属于并发.

总结

单CPU单核中线程只能并发,单CPU多核中线程可以并行。

单CPU中进程只能是并发,多CPU计算机中进程可以并行。

多核多线程,可以把多线程分配给不同的核心处理,其他的线程依旧等待,相当于多个线程并行的在执行,而单核多线程只能是并发。

线程VS进程,多线程VS多进程,并行VS并发,单核cpuVS多核cpu相关推荐

  1. 如何区分单核与多核cpu及理解并行与并发

    一.单核cpu和多核cpu的区分: 1.单核cpu: 实际上是一种假的多线程,因为在同一时间单元内 ,只能执行一个线程任务,只不过在非常短时间内迅速切换执行不同线程,让人误认为是在同时执行多个线程 2 ...

  2. python并发与并行_python多进程,多线程分别是并行还是并发

    匿名用户 1级 2017-09-30 回答 展开全部 并发和并行 你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行. 你吃饭吃到一半,电话来了,你停了下来接了电话, ...

  3. 多线程——线程与进程

    多线程--线程与进程 文章目录 多线程--线程与进程 一.操作系统 二.进程 2.1 管理进程 2.2 进程的调度(并发&并行) 2.3 PCB 进程控制块 2.4 进程的独立性 三.多线程 ...

  4. 多线程(一)线程与进程、Thread

    文章目录 前言 一.初识多线程 1.1 并行.并发.串行 1.2 并发编程的优缺点 1.2.1 并发编程的优点 1.2.2 并发编程的缺点 1.3 上下文切换 1.3.1 上下分切换的分类 1.3.2 ...

  5. 线程和进程一--并发和并行

    一.并行和并发 并行,parallel:同一个时间点,不同任务同时进行,互不干扰. 并发,concurrency:需要同时做某些事,强调的是需要处理多项事务,不一定同时进行. -> 并行解决的是 ...

  6. C语言并发执行的进程怎么写,多进程并发写文件 多进程并发售票 用c语言写

    tcp多进程并发文件服务器代码? 线程是相对独立的执行单位,是计算机系统进行调度的最小单位,其切换由操作系统控制,称之为短作业调度.换句话说您没有任何必要去手动调度线程.如果您想要实现的是连接分配的话 ...

  7. Python|线程和进程|阻塞|非阻塞|同步|异步|生成器和协程|资源竞争|进程间通信|aiohttp库|daemon属性值详解|语言基础50课:学习(11)

    文章目录 系列目录 原项目地址 第34课:Python中的并发编程-1 线程和进程 多线程编程 使用 Thread 类创建线程对象 继承 Thread 类自定义线程 使用线程池 守护线程 资源竞争 G ...

  8. Python多线程、多进程最全整理

    线程与进程的区别 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握.关于多进程和多线程,教科书上最经典的一句话是"进程是资源分配的最小单位,线程 ...

  9. Python 多进程并行编程实践: multiprocessing 模块

    转载:http://python.jobbole.com/87645/ 前言 并行计算是使用并行计算机来减少单个计算问题所需要的时间,我们可以通过利用编程语言显式的说明计算中的不同部分如何再不同的处理 ...

最新文章

  1. 高效Transformer层出不穷,谷歌团队综述文章一网打尽
  2. 40岁学python有前途吗-西安新城区学python人工智能少儿编程哪家机构好
  3. 依赖ConstraintLayout报错,Could not find *****,Failed to resolve:*****
  4. 实验 8 数组2 ok
  5. 迭代与递归实现无限级分类
  6. 解决: Sudamod/CM-13.0 源代码出现 Fatal: duplicate project .....问题
  7. c语言解析分隔符文本,c – 使用分隔符读取文件
  8. 前端学习(2602):什么是跨域请求和跨域请求数据数据的表现
  9. Mybatis四种分页方式
  10. 非法操作 login.php,阅文游戏中心 h5游戏接入wiki
  11. LeetCode MySQL 570. 至少有5名直接下属的经理
  12. eclipse 创建springboot 提示socket time超时问题
  13. python 宏观经济_Sargent数量经济:回归分析与Python
  14. java论文致谢_JAVA语言课程设计论文致谢范文
  15. python cv2图像质量压缩
  16. MC最强辅助模组,有了它从此下矿再也不怕了
  17. 《狂飙》壁纸大嫂如此惊艳,做成日历壁纸天天看
  18. Python 数据库连接方法和数据库连接池
  19. ubuntu装后的常用软件的安装与配置
  20. 【一起学Java第四期】BMI体重指数计算器

热门文章

  1. Redis为什么变慢了,来慢慢盘查?
  2. 安卓ttf格式的字体包_多看字体包优化篇
  3. Spring Cloud Gateway 雪崩了,该怎么办不要慌
  4. ldap 统一认证 java_如何在你的系统里集成LDAP统一认证
  5. android获取时区时间格式,考虑时区的日期/时间转换-Android
  6. 非香农类信息不等式_ICLR2020|北大图灵班本科生满分论文:计算约束下有用信息的信息论...
  7. PHP静态方法和属性
  8. python输入年份打印全年日历4×3_只需输入年份的打印日历
  9. python进程间通信 listener_python进程间通信之Queue
  10. python2 json大数据_大数据技术之python 操作json