CSAPP 第十二章:并发编程

如果逻辑控制流在时间上重叠,那么它们就是并发的。

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

  • 进程,每个逻辑控制流都是一个进程,由内核调度和维护,进程有独立的虚拟地址空间,要想共享数据,必须显示的IPC机制
  • I/O多路复用,应用程序在一个进程的上下文中显示地调度它们自己的逻辑流,因为程序是一个单独的进程,所有的流共享同一个地址空间
  • 线程,由内核进行调度,可以看做是以上两种方式的混合体

线程安全

当一个函数被多个线程反复地调用时,它会一直产生正确的结果,这个函数是线程安全的。反之,该函数是线程不安全的。

  • 四个线程不安全函数类:
    1、不保护共享变量的函数
    2、保持跨越多个调用的状态的函数
    3、返回指向静态变量的指针的函数
    4、调用线程不安全函数的函数
  • 线程安全函数:
    可重入函数:当它们被多个线程调用时,不会引用任何共享数据。

  • 死锁:一组线程被阻塞了,等待一个永远不可能为真的条件。

  • 规避死锁:给定所有互斥操作的一个全序,如果每个线程都是以一种顺序获得互斥锁并以相反的顺序释放,那么这个程序就是无死锁的。

你可能感兴趣的:(CSAPP 第十二章:并发编程)