并发是指,程序在运行的过程中存在多于一个的执行上下文。这些执行上下文一般对应着不同的调用栈。
并发概念的出现,主要有几个方面的原因:
- 为了更好的反应问题本身的结构。比如图形程序、服务器程序需要同时记录多个任务的运行情况。
所以,需要同时存在多个上下文。 - 为了利用更多的处理器提升性能。
这个是大家都了解的,这里就不详述了。 - 为了更方便的应对独立的物理设备。比如,Google的搜索任务要一堆的机器协作完成的。
因此需要同时在每个机器上都有一个程序的上下文运行环境。
后三个概念涵盖的范围是:并发>并行>分布式。
虽然串行限制了一个栈、一个堆,一个运行上下文,处理器只能死板的按照指令的序列执行。
但,当有多个栈,多个运行上下文时,就有了很多有趣的做法,可以去应对很多有趣的问题。
并行就意味着多个处理器运行多个进程。程序怎么写?bug怎么调?进程怎么通信?等等很多有意思的问题都一下子冒了出来。
希望能有机会和大家一起学习学习:)