也谈并发和并行

42 篇文章 0 订阅
15 篇文章 0 订阅

并发(concurrency)和并行(parallelism)都是常见的概念,并且很多时候并不容易进行区分,甚至被用作表达同样的概念。

网上最流行的解释,并发是一个人吃三个馒头;并行是三个人吃三个馒头。

这样理解简单概况了主要区别,但其实并不是太完整。


从对象的角度,并发是一种任务分配模式,指的是同一个处理器被调度处理不同的任务,这些任务往往都是同一性质的任务。例如浏览器打开多个页面,浏览器自身虽然是单进程的,但是它可以(一般都使用多线程方式)轮流打开页面,也可以打开一个页面一半后跑去打开另外一个页面,然后再回来。


而并行是一种运行的方式,指的是多个处理器同时处理若干个任务,这些任务往往是不同的任务。例如多核系统,一个核上正在处理视频渲染,另外一个核同时处理了网络收发包。强调同时性和多处理者。


从架构设计上看,使用并发主要是因为处理资源有限,而多个任务往往存在block情况(例如io block),可以通过适合的调度来隐藏任务的block,即降低响应延迟。

而并行则往往是因为处理资源比较多(多核),通过同时运行多个任务来充分利用资源,提高整体的吞吐量。现在的大数据运算平台如hadoop等就是典型的并行的概念。


因此,某些场合下,两者可以结合使用,以提高系统整体的性能。这是很考验架构师的地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值