同步
第7章 互斥锁和条件变量
7.1 概述
为允许在线程和进程间共享是数据,同步是必须的。
7.2 互斥锁:上锁和解锁
互斥锁用于保护临界区,以保证任何时刻只有一个线程/进程在执行其中的代码。
7.3 生产者-消费者问题
又称为有界缓冲区问题
隐式的同步: 生产者和消费者不知道内核在执行同步
当共享内存区用作生产者和消费者的IPC形式时,必须执行某种类型显示的同步。
线程间共享的全局变量
命令行参数
设置并发级别
创建生产者线程
等待生产者线程,然后启动消费者线程
产生数据条目
消费者验证数组的内容
7.4 对比上锁与等待
消息者必须等待
等待生产者
7.5 条件变量:等待与信号发送
互斥锁用于上锁,条件变量用于等待。
把生产者变量和互斥锁收集到一个结构中(把互斥锁(mutex)以及与其相关联的两个 变量nput和nval收集到一个名为put的结构中)
把计数器、条件变量和互斥锁收集到一个结构中
往数组里放置一个条目
通知消费者
消费者等待nready.nready变为非0
避免上锁冲突
7.6 条件变量:定时等待和广播
7.7 互斥锁和条件变量的属性
7.8 小结
第8章 读写锁
8.1 概述
某些应用中读数据比修改数据频繁,这些应用可从改用读写锁代替互斥锁中收益。
8.2 获取与释放读写锁
小结
第9章 记录上锁
9.1 概述
9.2 对比记录上锁与文件上锁
9.3 Posix fcnt1记录上锁
第10章 Posix信号量
10.1 概述
信号量是一种用于提供不同进程间或给定进程的不同线程间同步手段的原语。
小结
第11章 System V 信号量
11.1 概述
二值信号量,其值为0或为1的信号量
计数信号量,其值在0和某个限制值之间的信号量。
小结