读书笔记系列深入理解计算机系统之并发

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

每个线程都有自己的线程上下文,包括唯一的整数线程ID,栈,栈指针,程序计数器,寄存器,条件码,同时共享统一进程下的整个虚拟地址空间

每个进程开始都是单一线程,称为主线程,某一时刻,主线程创建一个对等线程,cpu时间片在线程间切换,线程上下文切换开销小于进程上下文切换的,而且不像进程那样有严格的父子层次关系,所有跟一个进程有关的线程组成一个对等线程池,独立于其他线程创建的线程。一个线程可以杀死他任何的对等线程,或等待它的任意对等线程终止。对等线程读写相同共享数据

任何一个时间点上,线程是可结合或可分离的,一个可结合的线程能够被其他线程收回和杀死,分离的线程不能被其他现场回收或杀死,内存资源只有在它终止时系统自动释放。

共享变量的互斥操作通常使用信号量来进行

因为S信号量值总为0或1,这种依靠信号量保护共享变量的叫做二元信号量。P操作进行互斥锁加锁,V操作进行互斥锁解锁

信号量另外一个作用是调度共享资源的访问,比如生产者-消费者,读-写问题

线程不安全函数