并发和并行的区别?一个很容易混淆,被忽略的问题
并发(concurrency)和并行(parallellism)是:
- 解释一:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。
- 解释二:并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。
- 解释三:并发是在一台处理器上“同时”处理多个任务,并行在多台处理器上同时处理多个任务。如hadoop分布式集群
所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。
各位是如何理解并行和并发的呢?
《并发的艺术》中大概是这样写的,系统中有多个任务同时存在可称之为“并发”,系统内有多个任务同时执行可称之为“并行”;并发是并行的子集。比如在单核CPU系统上,只可能存在并发而不可能存在并行。
所有的并发处理都有排队等候,唤醒,执行至少三个这样的步骤.所以并发肯定是宏观概念,在微观上他们都是序列被处理的,只不过资源不会在某一个上被阻塞(一般是通过时间片轮转),所以在宏观上看多个几乎同时到达的请求同时在被处理。如果是同一时刻到达的请求也会根据优先级的不同,而先后进入队列排队等候执行。
并发与并行是两个既相似而又不相同的概念:并发性,又称共行性,是指能处理多个同时性活动的能力;并行是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行,也亦是说并发事件之间不一定要同一时刻发生。
并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。
并行性指两个或两个以上事件或活动在同一时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。
并发,是在同一个cpu上同时(不是真正的同时,而是看来是同时,因为cpu要在多个程序间切换)运行多个程序。
并行,是每个cpu运行一个程序。
打个比方。并发,就像一个人(cpu)喂2个孩子(程序),轮换着每人喂一口,表面上两个孩子都在吃饭。并行,就是2个人喂2个孩子,两个孩子也同时在吃饭。
并发和并行的区别?一个很容易混淆,被忽略的问题相关推荐
- 如何向纯洁的女朋友解释并发与并行的区别?
原文链接:并发与并行的区别 现在我们都说设计可并行.高并发的程序,而且我们很多时候会在潜意识里觉得自己对并行(Parallelism)和并发(Concurrency)的区别很清楚,但如果要明确的说出二 ...
- 转:并发与并行的区别
转: https://www.jianshu.com/p/b11e251d3dc7 并发:一个处理器同时处理多个任务.(concurrency) 单个cpu逻辑上同时处理多个任务: 并行:多个处理器或 ...
- 并发与并行的区别(超级通俗易懂)
学习多线程的时候会遇到一个名词:并发.这是属于操作系统中的词汇,需要了解并发和并行的区别,从网上搜集了几种说法帮助理解. 一: 并发是指一个处理器同时处理多个任务. 并行是指多个处理器或者是多核的处理 ...
- java并发和并行的区别
概念: 并发:以交替的方式 利用等待某件事情完成的时间 来做其他事情,轮流执行任务,不一定同时.宏观上同时,微观上依次执行. 并行:在同一时刻,任务同时开始进行,彼此没有依赖关系.多个任务同一时刻同 ...
- 操作系统中并发和并行的区别和联系
多线程中并发和并行有区别吗? 搞不懂并发和并行分别是什么意思? 一文通俗的解释并发和并行的区别和联系. 本人一直以为并发和并行是一个意思,直到偶然从站长公众号上看到了并发和并行的区别一文,因此做个笔记 ...
- 多线程并发和并行的区别
背景 对于java开发从业人员来说,并发编程是绕不开的话题,juc并发包下提供了一系列多线程场景解决方案. 随着jdk1.8的普及,多线程处理问题,除了使用使用线程池(ExecutorServic ...
- 程序与进程的区别,并发与并行的区别,多进程的实现原理
目录 1. 什么是进程 2. 进程与程序的区别 3. 并发与并行 4. 同步\异步and阻塞\非阻塞(重点) 5. 进程的创建(了解) 6. 进程的终止(了解) 7. 进程的层次结构 8. 进程的状态 ...
- 并发和并行的区别_多核、多处理器、并发、并行、超线程概念总结
多核与多处理器 多核( ) 多核处理器就是指单个 CPU 中有多个可执行单元. 如下图所示,单个 CPU 中有两套可执行单元. 多处理器( ) 多处理器系统则是一个拥有多个 CPU 的系统.每个 CP ...
- 并发和并行的区别简单介绍
并发和并行 并发是关于正确有效地控制对共享资源的访问 同时完成多个任务.在开始处理其他任务之前,当前任务不需要完成.并发解决了阻塞发生的问题.当任务无法进一步执行,直到外部环境发生变化时才会继续执行. ...
最新文章
- 师生脑信息传递的证据:部分学习还是整体学习?
- AI 与区块链:两大热门技术,会碰撞出什么样的火花?
- C#调用C++的DLL函数另一则(delegate) z
- 【C语言学习】国嵌21__指针基础
- H264 流媒体 编码汇总
- C/C++编程笔记:经典游戏植物大战僵尸游戏辅助,源码送上
- Python 03 基础作业
- linux(windows,mac)下安装ta-lib
- 遇到了火狐扩展全部丢失的问题
- 梯度消失与梯度爆炸---解决方案(二)--杀手锏
- Oracle -- rollup函数
- 汽车维修企业管理【7】
- 关于j2me mmapi的player接口的一些理解.
- centos 7搭建直播间
- 使用ESP8266通过Blinker平台接入天猫精灵控制电视/空调
- idea怎么设置热启动
- [附源码]Java计算机毕业设计SSM东北鹿产品售卖网站
- 算法分析学习笔记二 蛮力法
- branch什么意思中文翻译_日本街头被“玩坏”的中文翻译,你能忍到第几条?
- 【北邮人福利】微软office和windows完全免费了
热门文章
- Badge分析如何逼死处女座
- 基础实验5-2.2 电话聊天狂人(Map的使用+例题)
- pd.concat()和pd.merge()
- DDR4两根4G组的双通道跟1根8G单通道有什么区别?
- Linux下JIRA版本5.0.1的安装.破解.汉化
- 人人旗下风车网CEO的创业失败教训总结
- 抓包工具Fiddler下载安装
- 如何保养笔记本的电池
- 3.1 数据报表之Excel操作模块 XlsxWriter
- 字符0、数字0和‘\0’的区别