csapp 第12章 并发编程 读书笔记
并发编程
应用级并发
- 访问慢速I/O设备
- 与人交互
- 通过推迟工作以降低延迟
- 服务多个网络客户端
- 在多核机器上进行并行计算
现代操作系统提供三种基本的构造并发程序的方法
- 进程
- I/O多路复用
- 线程
基于进程的并发编程
进程的优劣
优点:一个进程不会覆盖另一个进程的虚拟内存
确定:共享信息困难,进程控制和IPC开销很高
基于I/O多路复用的并发编程
I/O多路复用技术的优劣
优点
- 比基于进程的设计给了程序员更多的对程序行为的控制
- 运行在单一进程上下文中,容易共享数据,方便调试
缺点
- 编码复杂
- 不能充分利用多核处理器
基于线程的并发编程
用信号量同步线程
利用信号量来调度共享资源
- 生产者-消费者问题
- 读者-写者问题
使用线程提高并行性
- 并行程序的加速比
- 效率
其他并发问题
四个线程不安全函数类
- 第1类:不保护共享变量的函数
- 第2类:保持跨越多个调用的状态的函数
- 第3类:返回指向静态变量的指针的函数
- 第4类:调用线程不安全函数的函数