csapp 第12章 并发编程 读书笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32768743/article/details/87257679

并发编程

应用级并发

  • 访问慢速I/O设备
  • 与人交互
  • 通过推迟工作以降低延迟
  • 服务多个网络客户端
  • 在多核机器上进行并行计算

现代操作系统提供三种基本的构造并发程序的方法

  • 进程
  • I/O多路复用
  • 线程

基于进程的并发编程

进程的优劣

优点:一个进程不会覆盖另一个进程的虚拟内存

确定:共享信息困难,进程控制和IPC开销很高

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

I/O多路复用技术的优劣

优点

  • 比基于进程的设计给了程序员更多的对程序行为的控制
  • 运行在单一进程上下文中,容易共享数据,方便调试

缺点

  • 编码复杂
  • 不能充分利用多核处理器

基于线程的并发编程

用信号量同步线程

利用信号量来调度共享资源

  • 生产者-消费者问题
  • 读者-写者问题

使用线程提高并行性

  • 并行程序的加速比

S p = T 1 T p S_p = \frac{T_1}{T_p}

  • 效率

E p = S p p = T 1 p T p E_p = \frac{S_p}{p} = \frac{T_1}{pT_p}

其他并发问题

四个线程不安全函数类

  • 第1类:不保护共享变量的函数
  • 第2类:保持跨越多个调用的状态的函数
  • 第3类:返回指向静态变量的指针的函数
  • 第4类:调用线程不安全函数的函数

猜你喜欢

转载自blog.csdn.net/qq_32768743/article/details/87257679