并发和并行并不是一个意思。
并行:是严格的多CPU同时执行。
并发,并不是严格的同时执行,而是以时间片为单位交替执行,所以不需要多处理器。
并发例子:
一个并发程序是指能同时执行通常不相关的各种任务。
以一个游戏服务器为例子:它通常是有各种组件组成,每种组件都跟外部世界进行着复杂的信息交互。
一个组件有可能要处理多个用户聊聊;另外一些可能要处理用户的输入,并把最新状态反馈给用户;其它的用来进行物理计算。
这些都是并发处理。
并发程序并不需要多核处理器。
并行例子:
相比之下,并行程序是用来解决一个单一任务的。以一个试图预估某支股票价格在下一分钟波动情况的金融组件为例,如果想最快速度的知道标普500中哪知股票应该卖出还是买进,你不能一个一个的计算,而是将这些所有的股票同时计算。这是并行。