线程同步方法总结

互斥锁、自旋锁、读写锁

互斥锁、自旋锁、读写锁对临界资源的操作流程都是一样的

  1. 为临界资源加锁,其他线程不可访问
  2. 访问临界资源
  3. 访问完成,解锁,其他线程可以访问

如果临界资源是被加锁的,需要等待被解锁。
在这里插入图片描述
图片来源:慕课网

条件变量

线程用步较为复杂的方法

  1. 加锁保护条件变量
  2. 判断条件是否满足,未满足等待条件满足,等待时线程是睡眠,直到满足被唤醒
  3. 对临界资源进行操作
  4. 操作完成后解锁

在这里插入图片描述
图片来源:慕课网《编程必备基础》

四种方法的对比

同步方法 描述
互斥锁 最简单的线程同步方法,会阻塞线程
自旋锁 避免切换的线程同步方法,属于忙等待
读写锁 多读少写资源设计的线程同步方法,可以高效提升性能
条件变量 相对复杂的线程同步方法,有更灵活的使用场景

猜你喜欢

转载自blog.csdn.net/wankcn/article/details/108414721