文章目录
1.为什莫要同步?
为了保证数据访问资源的正确性和安全性
2.进程(线程)同步
线程同步定义
- 线程同步指的是当一个线程在对某个临界资源进行操作时,其他线程都不可以对这个资源进行操作,直至该线程完成操作,其他线程才能操作,也就是协同步调,让所有线程按照一定的顺序执行,使其正确性和效率都有迹可循
竞争:两个或多个线程竞争执行同一段代码或访问统一资源的现象
临界资源:该资源只能互斥共享
临界区:访问临界资源的代码段
在单核情况下,在同一个时刻两个线程都在同一段代码上,就是代码竞争,如果两个线程同时访问一个数据就叫数据竞争
进程是系统分配资源的基本单位
线程是处理机调度的基本单位
线程同步四种方法
- 互斥锁,信号量,读写锁,条件变量
3. 互斥
- 任何时刻只能有一个人在临界区里,称为互斥
- 互斥要满足的四个条件:
1>不能有两个进程同时在临界区里面
2>能偶在任何数量和速度的CPU上正确执行
3>在互斥区域外不能阻止另一个进程的运行
4>进程不能无限制的等待进入临界区
3.1 sleep,wakeup解决生-消问题
- 生产者和消费者问题
生产者 缓冲区 消费者
sleep: