当前位置: 首页> 汽车> 报价 > 操作系统复习-线程同步

操作系统复习-线程同步

时间:2025/7/11 0:16:32来源:https://blog.csdn.net/weixin_63775160/article/details/139681002 浏览次数: 0次

互斥量

在这里插入图片描述

  • 两个线程的指令交叉执行
  • 互斥量可以保证先后执行
  • 称为原子性
    在这里插入图片描述
    在这里插入图片描述
  • 原子性是指一系列操作不可被中断的特性
  • 这一系列操作要么全部执行完成,要么全部没有执行
  • 不存在部分执行部分未执行的情况

互斥锁

  • 互斥量是最简单的线程同步的方法
  • 互斥锁,处于两态之一的变量,解锁和加锁
  • 两个状态可以保证资源访问的串行
  • 操作系统直接提供了互斥量的API
  • 开发者可以直接使用API完成资源的加锁,解锁操作

自旋锁

在这里插入图片描述

  • 自旋锁也是一种多线程同步的变量
  • 使用自旋锁的线程会反复检查锁变量是否可用
  • 自旋锁不会让出CPU,是一种忙等待状态
  • 死循环等待锁被释放
  • 自旋锁避免了进程或线程上下文切换的开销
  • 操作系统内部很多地方使用的是自旋锁
  • 自旋锁不适合在单核CPU使用

读写锁

  • 临界资源多读少写
  • 读取的时候并不会改变临界资源的值
  • 是否存在效率更高的同步方法
  • 读写锁是一种特殊的自旋锁
  • 允许多个读者同时访问资源以提高读性能
  • 对于写操作则是互斥的
    在这里插入图片描述
  • pthread_rwlock_t
  • pthread_rwlock_rdlock(读锁)
  • pthread_rwlock_wrlock(写锁)

条件变量

  • 条件变量是一种相对复杂的线程同步方法
  • 条件变量允许线程睡眠,知道满足某种条件
  • 当满足条件时,可以向该线程信号,通知唤醒
  • 缓冲区小于等于0时,不允许消费者消费,消费者必须等待
  • 缓冲区满时,不允许生产者往缓冲区生产,生产者必须等待
  • 当生产者生产一个产品时,唤醒可能等待的消费者
  • 当消费者消费一个产品时,唤醒可能等待的生产者

条件变量使用

  • 需要配合互斥量使用
  • pthread_cond_t
  • pthread_cond_wait(等待条件满足)
  • pthread_cond_notify(等待被唤醒)

总结

在这里插入图片描述

关键字:操作系统复习-线程同步

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: