操作系统复习-线程同步

news/2024/6/18 21:13:19 标签: linux

互斥量

在这里插入图片描述

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

互斥锁

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

自旋锁

在这里插入图片描述

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

读写锁

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

条件变量

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

条件变量使用

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

总结

在这里插入图片描述


http://www.niftyadmin.cn/n/5520304.html

相关文章

在Android Studio中将某个文件移出Git版本管理

最新在整理代码时发现,local.properties文件开头有这么一段注释: ## This file must *NOT* be checked into Version Control Systems, # as it contains information specific to your local configuration. 大意是这个文件不要加入到版本管理中。 之…

Elasticsearch 认证模拟题 - 19

一、题目 使用异步查询 task1 索引,并且 找到 miantable_name 字段值为 name8 的文档 1.1 考点 异步搜索 1.2 答案 POST task1/_async_search {"query": {"term": {"miantable_name": {"value": "name8"}}}…

GNU/Linux - 使用字符设备来操作GPIO

从 4.8 版开始,Linux 内核引入了基于字符设备的新用户空间 API,用于管理和控制 GPIO(通用输入/输出)。这篇文章介绍了新接口的基本原理,并通过一个简单的教程/示例演示了如何使用新 API 控制 GPIO。 教程中使用的硬件是…

二进制中的相反数

相反数的本质 相反数的本质是两数相加等于 0,1 加上 1 的相反数-1 永远等于 0。 二进制中取相反数的公式 对于二进制运算来说减法是通过加上一个负数实现的,所以想要达成两数相加等于 0 的情况一定是通过溢出来实现。两数相加等于 0 可以带入为 1111…

工业屏:千万不要以为电脑显示啥样,工业屏就啥样,注意色差。

重要的事情说三遍:一定要放到实际场景下调色,定要放到实际场景下调色,定要放到实际场景下调色。 工业控制屏的色域通常比普通电脑显示器要小。工业控制屏主要用于工业环境中,需要满足特定行业的需求和标准。由于工业控制屏的设计…

德克萨斯大学奥斯汀分校自然语言处理硕士课程汉化版(第九周) - 可解释性

可解释性 1. NLP中的可解释性 1.1. 局部解释1.2. 文本解释1.3. 模型探测 2. 标注伪影3. 思维链 1. NLP中的可解释性 在自然语言处理领域,可解释性是指理解和揭示NLP模型如何做出决策的能力。一些模型本身是自然透明的,我们可以理解它们为何做出这样的决…

智慧班牌系统源码,智慧校园云平台系统,基于小程序原生开发的智慧校园小程序源码

智慧班牌系统,也被称为电子班牌系统,是一款专为学校打造的信息化产品,用于加强学校班级文化建设和班级风采展示。该系统通过整合学校对外宣传、日常互动交流、教师教学办公、课外学习延伸、智能硬件接入等各种服务,为老师、家长、…

Java高手的30k之路|面试宝典|精通Map篇

HashMap HashMap 是 Java 集合框架中非常重要的一部分,它是基于哈希表的数据结构。 1. 基于哈希表的实现 HashMap 基于哈希表实现。哈希表是通过将键(Key)映射到值(Value)的一种数据结构。具体来说,Hash…