并发基础知识总结
用并发解决的问题大体上可分为”速度”和”设计可管理性”两种
基本的线程机制
- 一个线程就是在进程中的一个单一顺序控制流;单个进程可以有多个并发执行的任务,但程序使得每个任务都好像拥有自己的CPU一样,其底层机制是切分CPU时间;在使用线程时,CPU将轮流给每个任务分配其占用时间;而多个CPU则允许程序将线程放在不同CPU上同时执行。
- 针对每个线程,一个单独的栈空间被分配给其使用
并发和并行的区别
- 并发性(concurrency),又称共行性,是指能处理多个同时性活动的能力,并发事件之间不一定要同一时刻发生。
- 并行(parallelism)是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行。
- 并发和并行都可以是多个线程;如果多个CPU同时执行,则为并行;如果单个CPU执行,则为并发。
- 并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生
- 注意是否【同时】及【同时】的发生条件
并发(Concurrency)v.s. 顺序执行(Sequential)
几个例子简单描述一下:
并发:小明正在打游戏,小红给他打电话:小明接了电话,一心一意挂机,打完电话继续游戏。
顺序执行:小明正在打游戏,小红给他打电话:小明继续打游戏直到打完,小明接了小红电话。(小红坚持不懈地打电话给小明!=.=)
并行(Parallelism)v.s. 串行(Serial)
并行:小明正在打游戏,小红给他打电话,响了一声之后,要开始团战了:小明接了小红电话,一边打电话一边打团战,稳的不行。
串行:小明正在打游戏,小红给他打电话,响了一声之后,要开始团战了:小明专心接电话,专心挂机,打完挂了电话再继续打团。