博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
并发与并行
阅读量:6943 次
发布时间:2019-06-27

本文共 666 字,大约阅读时间需要 2 分钟。

并发与并行

并行 : 任务数 <= 核数 ; 真正的 多个任务同时执行
并发 : 任务数 > 核数 ; 快速的依次执行多个任务

并行

指的是任务数小于等于CPU核数,即同一时刻多个任务真的是⼀起执行的,真正的并行执行多任务只能在多核CPU上实现,但是由于任务数量远远多于CPU的核心数量,所以操作系统也会自动把很多任务轮流调度到每个核心上执行。单线程永远无法达到并行状态,另外的,由于Python的多线程GIL锁的存在,对于Python来说无法通过多线程到达并行状态。

 

并发

指的是任务数多于cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“⼀起”执行(实际上总有⼀些任务不在执行,因为切换任务的速度相当快,看上去的假象是一起执行)

并发设计的标准:使多个操作可以在重叠的时间段内进行,重叠时间可以理解为一段时间内。例如:在时间1s秒内, 具有IO操作的task1和task2都完成,就可以说是并发执行。所以单线程也是可以做到并发运行的。当然并行肯定是并发的。一个程序能否并发执行,取决于设计,也取决于部署方式。例如, 当给程序开一个线程(协程是不开的)它不可能是并发的,因为在重叠时间内根本就没有两个task在运行。当一个程序被设计成完成一个任务再去完成下一个任务的时候,即便部署是多线程多协程的也是无法达到并发运行的。

并行与并发的关系并发的设计使到并发执行成为可能,而并行是并发执行的其中一种模式

转载于:https://www.cnblogs.com/xiaozengzeng/p/10705878.html

你可能感兴趣的文章
Axure 全局辅助线(转)
查看>>
js原生设计模式——9外观模式封装2(小型代码库YJ)
查看>>
onvif开发实战2--总结框架搭建
查看>>
Apache ab测试工具使用方法(无参、get传参、post传参)
查看>>
单例设计模式之安全的懒汉式
查看>>
iOS_20_微博OAuth授权_取得用户授权的accessToken
查看>>
离线用户的灰色头像处理
查看>>
php递归函数return会出现无法正确返回想要值的情况
查看>>
Android Studio之Activity切换动画(三)
查看>>
Bitcoin: A Peer-to-Peer Electronic Cash System(比特币论文翻译)
查看>>
Redis-Redi事务注意事项
查看>>
ffmpeg mediacodec 硬解初探
查看>>
Cocostudio 1.4 实现的DemoShop
查看>>
Ambari-Blueprint介绍
查看>>
可编辑ztree节点的增删改功能图标控制---已解决
查看>>
Android-自己定义标题栏
查看>>
redis中键空间通知
查看>>
JavaScript快速检测浏览器对CSS3特性的支持情况
查看>>
C#控制台程序输出彩色文字
查看>>
Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie
查看>>