在计算机科学中,并发模型的研究是一个持久的课题:正如美国计算机科学家L.兰波特(Leslie Lamport,1941~ )在1978年的计算机协会(Association for Computing Machinery; ACM)通讯文章中指出的那样,“虽然并发的程序执行已经被考虑了许多年,但并发程序的计算机科学始于E.戴克斯特拉(Edsger Dijkstra)1965年那篇介绍互斥问题的开创性论文”。
从网站到实验室的共享打印机,到销售火车票的网站,再到智能手机和安全控制等诸如此类的系统,这些都是并发模型的具体例子。只要程序、算法或问题由多个组件(或单元)并行地(在同一台机器或多台机器上)运行并相互交互以完成预期的目标,就会发生并发行为。这些组件并发时,会以交叠的形式执行。理想情况下,进程执行的最终效果应该与组件具体的交叠顺序无关。这使得并发单元能够并行执行,可以显著提高多处理器和多核系统性能。
由于并发模型中的交叠执行机制,使得实际的执行顺序呈现非确定性,进而导致系统中可能的执行路径的数量呈指数爆炸。共享资源(例如共享打印机)是导致进程异常的重要原因,这些并发使用可能导致死锁、饿死等问题。当多个单元要访问共享资源但是它们阻止彼此使用资源时,就会发生死锁。饿死现象是在描述组件永远不能访问其所需资源,因为其他并发组件一直占用它。设计并发模型系统通常需要找到可靠的方案来协调其组件的执行调度、数据交换、内存分配等,在确保不会发生死锁或饿死的同时,达到以最小化响应时间并最大化吞吐量的目的。
许多用于一般并发计算的并发模型得到了持久的发展。比如:在20世纪60年代早期提出的佩特里(Petri)网;以英国计算机科学家R.米尔纳(Robin Milner)的通信演算系统(CCS)和英国计算机科学家T.霍尔(Tony Hoare)提出的通信顺序进程(CSP)为代表的进程演算/进程代数;从20世纪70年代后期开始发展起来的随机时间并发模型;从20世纪70年代初开始提出的角色模型;以及从2000年代开发的Reo协调语言。