第12章-并发编程

前言

如果逻辑控制流在时间上重叠,那么它们就是并发的(concurrent)。这种常见的现象称为并发(concurrency )

使用应用级并发的应用程序称为并发程序(concurrent program)。现代操作系统提供了三种基本的构造并发程序的方法:

  • 进程

    • 用这种方法,每个逻辑控制流都是一个进程,由内核来调度和维护。因为进程有独立的虚拟地址空间,想要和其他流通信,控制流必须使用某种显示的进程间通信(interprocess communication, IPC)机制。
  • I/O多路复用

    • 在这种形式的并发编程中,应用程序在一个进程的上下文中显示地调度它们自己的逻辑流。逻辑流被模型化为状态机,数据到达文件描述符后,主程序显示地从一个状态转换到另一个状态。因为程序是一个单独的进程,所以所有的流都共享同一个地址空间
  • 线程

    • 线程是运行在一个单一进程上下文中的逻辑流,由内核进行调度。你可以把线程看成是其他两种方式的混合体,像进程流一样由内核进行调度,而像I/O多路复用流一样共享同一个虚拟地址空间。

12.1 基于进程的并发编程

12.2 基于I/O多路复用的并发编程

12.3 基于线程的并发编程

12.4 多线程程序中的共享变量

12.5 用信号量同步线程

12.6 使用线程提供并行性

12.7 其他并发问题

12.8 小结