一、并发编程综述
- 并发编程的含义,基于独立程序的(多线程编程),一台计算机(多进程编程),基于一个网络(分布式计算)
二、并发编程基础
- 并发编程思想来源于多元程序(多任务)操作系统。多任务操作系统允许同时运行多个程序。
- 单任务操作系统中,任务是被一个接一个的读取,处理并运行的。各个任务的执行完全串行**。**
三、串行程序与并发程序
- 串行程序指 一个只能被顺序执行的指令列表。
- 并发程序指 被并发执行的俩个以上的串行程序的总称,允许串行程序运行在一个或多个cpu上,叫多元程序。
- 多元程序由操作系统内核支持并提供多个 串行程序复用cpu的方法。叫多元处理。
- 多元处理指 计算机的多个cpu共用一个内存,同一时刻多个串行程序分别运行在不同的cpu上。
四、并发程序与并行程序
- 并发程序指可以被同时发起执行的程序。
- 并行程序指可以被同时运行在多个cpu上的并发程序。
五、并发程序与并发系统
- 并发程序属于程序,包含多个模块,模块之间紧密关联,可以在概念上看作是一个整体。
- 模块之间可以通过协议通信,并且是松散耦合的。可以看作是一个系统。
- 并发系统可能是并行的,多个模块可以同时在不同的硬件上运行。
六、并发程序的不确定性
- 串行程序的所有活动是有先后顺序,固定的。
- 并发程序中的活动是部分有序,其余部分的活动顺序没有明确指定。即不确定性。
- 不确定性 导致了 并发程序的每次运行的活动执行路径是不同的。
七、并发程序内部的交互
- 并发程序包含多个模块,每个模块可以看作是一个串行程序。
- 串行程序之间可能存在交互的情况,如串行程序对一个共享的资源进行访问。如相互之间传递数据。
- 串行程序之间的交互,要求我们协调他们的执行,就涉及到了同步。
- 同步的作用是避免并发访问共享资源(临界区)时可能存在的冲突。
- 同步的原则,程序在使用共享资源,要先请求资源 并获得访问权限。当程序不在使用时,应该释放该资源。程序对资源的请求不应该导致其他正在访问该资源的程序中断。
- 传递数据,属于并发程序内部的通讯。协调内部通信的方式除了同步还有异步
- 异步指数据不加延时的把数据发送给对方,即使数据的接收方还没有做好准备。