并发和并行性有什么区别?

并发和并行性有什么区别? 编程

示例被赞扬。 多线程


#1楼

并发性:具备共享资源潜力的多个执行流 并发

例如:两个线程争用一个I / O端口。 spa

平行主义:将问题分红多个类似的块。 线程

例如:经过在文件的每半部分上运行两个进程来解析大文件。 进程


#2楼

并发是指两个或多个任务能够在重叠的时间段内启动,运行和完成。 并不必定意味着它们都将同时运行。 例如,单核计算机上的多任务处理资源

并行是指任务实际上在多核处理器上同时运行。 get


引用Sun的《 多线程编程指南》io

  • 并发:至少有两个线程在进行时存在的条件。 并行性的一种更通用的形式,能够包括时间切片做为虚拟并行性的一种形式。 配置

  • 并行性:当至少两个线程同时执行时出现的条件。


#3楼

他们解决了不一样的问题。 并发解决了CPU资源不足和任务繁多的问题。 所以,您能够经过代码建立线程或独立的执行路径,以便在稀缺资源上共享时间。 直到最近,因为CPU的可用性,并发一直是讨论的主要内容。

并行解决了如下问题:找到足够多的任务和适当的任务(能够正确拆分的任务),而后将其分配给大量CPU资源。 并行性固然一直存在,但因为多核处理器很是便宜,所以它已经走在前列。


#4楼

我喜欢Rob Pike的演讲:并发不是并行(更好!) (幻灯片) (演讲)

Rob一般会谈论Go,而且一般会经过直观的解释来解决并发与并行性问题! 这是一个简短的摘要:

任务:让咱们燃烧一堆过期的语言手册! 一次一个!

任务

并发:任务有许多并发分解! 一个例子:

地鼠

并行性:若是至少有两个地鼠同时工做或不一样时工做,则先前的配置会并行发生。


#5楼

补充别人的话:

并发就像让杂耍杂耍的人玩弄许多球。 无论看起来如何,魔术师一次只能抓/扔一个球。 并行性是多个杂耍者同时玩杂耍球。

相关文章
相关标签/搜索