并发与同步
并发 指多个控制流同时执行:
- 多处理器的多任务(也可叫做并行)
- 单处理器的多任务(多个任务通过调度共享一个处理器)
- 单处理器任务+中断
并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生。
同步 是为了保证在并发执行环境中各个控制流可以有效执行而采用的一种编程技术。
临界区、锁、死锁
临界区 在并发程序执行环境中,会访问共享资源的指令片段。
- 一个控制流进入临界区时,其他相关控制流必须等待。
- 锁是最常见的实现同步的技术:
- 不可睡眠的锁 (当自旋锁被占用且当前线程无法获取时,线程不会进入休眠状态,而是持续自旋(不断尝试获取锁),直到锁被释放)
- 可睡眠的锁