并发和并行的区别,相信很多初出茅庐的程序员都会被问到这个问题吧,这两个概念极容易混淆,今天,我们就来通俗地聊聊并发和并行的区别@mikechen
并发(Concurrent)当有多个线程在操作时,如果系统只有一个 CPU,则它根本不可能真正同时进行一个以上的线程,它只能把 CPU 运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状态.这种方式我们称之为并发(Concurrent)。
并发,指的是多个事情,在同一段时间段内发生了,大家都在争夺统一资源。再举一个例子:我们可以拿网吧来举例子。
一个网吧每天晚上六点到晚上十点的用户量特别大,这时候可以称之为并发量大。
假如该网吧有100个机子,但是晚上六点到晚上十点却有150人来上网,这时候就有50人无法正常上网,要么该50人在此等待,要么就离开网吧。
网吧处理这个一百五十人的上网请求,不是在同一时刻进行的,而是在一段时间内处理的,其实,这就是并发。
并行当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。
我们在玩电脑的时候,计算机可以“同时”运行着音乐软件和IDEA,我们可以边敲代码,边听音乐,计算机同时的在做多件事情。
在单核cpu的计算机中,我们似乎也能“同时”做这些事情,但这不是真正意义上的并行,其底层是由于cpu快速切换执行任务,给我们一种同时运行的错觉而已。
但是,当计算机是多核cpu的时候,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行,这时候才是真正的“同时”进行,我们称之为并行。
就好比,一个网吧,它有多台电脑可以同时满足多位客户的上网需求,这就是并行,同时进行,互不争抢。
并发和并行的区别并发是指一个处理器同时处理多个任务,并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。
并发是逻辑上的同时发生,而并行是物理上的同时发生。
并行在多处理器系统中存在,而并发可以在单处理器和多处理器系统中都存在,并发能够在单处理器系统中存在是因为并发是并行的假象,并行要求程序能够同时执行多个操作,而并发只是要求程序假装同时执行多个操作(每个小时间片执行一个操作,多个操作快速切换执行)。
并发和并行两者的最大区别:一个是交替执行,一个是同时执行,一图胜千言,如下图所示:
以上
架构技术合集分布式架构设计从0到1全部合集(附:分布式、微服务、高并发等大型网站架构)JVM(Java虚拟机)从0到1全部合集Java多线程与并发从0到1全部合集Redis分布式缓存从0到1全部合集Spring开发框架从0到1全部合集MySQL数据库从0到1全部合集本文发布于:2023-02-28 21:00:00,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/167771474999864.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:挂起状态(挂起状态的性质).doc
本文 PDF 下载地址:挂起状态(挂起状态的性质).pdf
留言与评论(共有 0 条评论) |