并发设计原则入门
1. 并发编程概述
计算机系统用户一直追求更好的系统性能,如更高质量的视频、更出色的游戏体验和更快的网络速度。过去,处理器通过提升速度来增强性能,但如今,处理器不再单纯提高速度,而是增加核心数量,使操作系统能够同时执行多个任务,这就是并发。并发编程涵盖了让多个任务或进程在计算机中同时运行,并在它们之间进行通信和同步,同时避免数据丢失或不一致的所有工具和技术。
1.1 基本并发概念
1.1.1 并发与并行
并发和并行是相似的概念,但不同人有不同定义:
- 一种定义认为,在单核心单处理器中,操作系统任务调度器快速在多个任务间切换,使多个任务看似同时运行,这就是并发;而多个任务在不同计算机、处理器或处理器核心中真正同时运行,则是并行。
- 另一种定义指出,系统中多个不同任务同时运行是并发;同一任务的不同实例在数据集的不同部分同时运行是并行。
- 还有定义称,系统中多个任务同时运行是并行,而程序员用于同步任务及其对共享资源访问的技术和机制则属于并发范畴。
随着多核处理器的发展,并发和并行的相似性愈发明显。
1.1.2 同步
在并发中,同步是指协调两个或更多任务以获得预期结果,主要分为以下两种:
- 控制同步 :例如一个任务依赖另一个任务的结束,那么第二个任务必须在第一个任务完成后才能开始。
- 数据访问同步 :当两个或多个任务访问一个共享变量时,在任何给定时间只有一个任务可以访问该变量。
与同步密切相关的概念是临界区,它是一段由于访问共