并发并行区别

xmge · · 908 次点击
楼主的说法有一些问题。并发和并行并不是互斥关系,并没有“并发就不能并行”的规定。楼主说并发必须是“一个处理器”,其实应该是: 多个处理器就是并行,单个处理器就不是并行,但“几个处理器”和“是不是并发”没关系。 “并发”(concurrency)描述的是任务的**产生**模式。一个任务已经开始处理,但还没完成时,或者一个任务还没开始处理前,又来了第二个任务,这就是并发。 “并行”(parallel)描述的是**并发**任务的**处理**模式。有多种方式来处理“并发”,“并行”是其中一种模式,也就是多个处理器同时运行。还有其他的模式,比如单处理器。 如果任务不是并发的,不管是一个处理器还是多个处理器,都得一个任务一个任务完成(因为一个任务完成前下一个任务压根没来)。 要举个例子就是,有很多顾客会到银行办理业务,一个顾客在办完业务之前,下一个顾客也到达银行,导致银行大厅里有多个顾客,这就是“并发”。如果银行有多柜台开着,同时处理多个顾客的业务,不管每个柜台是怎么做的,这都是“并行”。而如果银行只有一个柜台开着,那么都不是并行。 [参考资料](https://softwareengineering.stackexchange.com/questions/190719/the-difference-between-concurrent-and-parallel-execution)
#5
更多评论
haoyupei
大道至简,始终如一
### 感谢,通俗易懂!
#1
你这个说法不准确,软件一般强调并发是多少,而不管你运行在几个核心上。并,一起的意思,发,出发,并发,是一起出发的意思
#2