线程同步
- 共享资源,多个线程都可以堆共享资源操作。
- 线程操作共享资源的先后顺序不确定
- 处理器堆存储器的操作一般不是原子操作。
临界区
锁住的范围。
临界区应该尽可能小。
死锁
- 同一线程拥有A锁时再请求A锁。
- 线程1拥有A锁,请求B锁;线程2拥有B锁,请求A锁。
互斥量
互斥锁。
读写锁
读共享,写独占。
条件变量
条件变量给多个线程提供了一个会和的场所。
一个队列。
生产者唤醒所有等待的消费者,争抢资源。
信号量
mutex可以理解为全局变量0和1。
互斥锁的升级版。0~n.
互斥锁,读写锁,条件变量,信号量,以上都为进程间通信。
进程间锁
子进程与父进程间
1. 互斥锁
2. 文件锁
哲学家就餐问题
规定同时先右手拿筷子。然后try_lock()左手筷子。
当无法获得时,释放右手的筷子。
try_lock