当前位置: 首页 > news >正文

【RK3588 Linux 5.x 内核编程】-内核线程与Seqlock

内核线程与Seqlock

文章目录

  • 内核线程与Seqlock
    • 1、Seqlock介绍
    • 2、Seqlock相关API
      • 2.1 初始化
      • 2.2 写操作
      • 2.3 读操作
    • 3、驱动实现
    • 4、驱动验证

在前面的文章中,我们介绍了 Mutex、Spinlock、Read/Write Spinlock 的使用及其实现。 它们都用于保护共享资源不被两个或多个进程同时修改。当想平等对待写操作和读操作时,那么就必须使用自旋锁。 在某些情况下,我们可能不得不重视读操作,在这种情况下,我们可以使用读写自旋锁。那么,是否有任何机制重视写操作? 答案是肯定的,它在 Linux 中就存在。 Seqlock 重视写操作。 本文将介绍如何在Linux驱动中使用 Seqlock。

1、Seqlock介绍

2.5.60 内核添加了一种称为 Seqlock 的新型锁。 Seqlock 是顺序锁的缩写形式。 它是一种重视写操作的读写器一致性机制。 所以这避免了写操作线程饥饿的问题。Seqlock如何工作?

  • 1)当没线程在临界区时,一个写操作线程可以通过获取锁进入临界区。 一旦获得了锁,写入器就会将序列号加一。 此时,序列号是一个奇数。 写入完成后,它会再次将序列号加一。 现在这个数字是一个偶数。 所以,当序号为奇数时,写入就发生了。 当序号为偶数时,写入完成。 临界区中只允许一个写入器线程。 所以其他写操作线程将等待锁。

  • 2)当读线程要读取数据时,首先会读取序列

http://www.lryc.cn/news/502604.html

相关文章:

  • 访问者模式的理解和实践
  • 在Scala中对Map函数的使用
  • PyTorch基本使用-张量的索引操作
  • OpenCV实验:图片加水印
  • sql server log文件
  • Elasticsearch 集群部署
  • 微信小程序5-图片实现点击动作和动态加载同类数据
  • 策略梯度定理公式的详细推导
  • 力扣-图论-10【算法学习day.60】
  • 《Python WEB安全 库全解析》
  • Linux yum-config-manager命令异常
  • ios 开发配置蓝牙
  • geoserver(1) 发布sql 图层 支持自定义参数
  • Linux:network:添加ip的时候自动添加一个本地路由
  • go 集成nacos注册中心、配置中心
  • ssd202d-badblock-坏块检测
  • MySQL-练习-数据介绍
  • React框架:解锁现代化Web开发的新维度
  • 电阻功率,限流,等效电阻
  • Qt | 开发工具(top1)
  • Node.js express
  • ios h5中在fixed元素中的input被focus时,键盘遮挡input (van-popup、van-feild)
  • springboot整合lua脚本在Redis实现商品库存扣减
  • MySQL ON DUPLICATE KEY UPDATE影响行数
  • uniapp小程序 slot中无法传递外部参数的解决方案
  • umi实现动态获取菜单权限
  • Pytest-Bdd-Playwright 系列教程(14):Docstring 参数
  • 交互开发---测量工具(适用VTK或OpenGL开发的应用程序)
  • Qt 一个简单的QChart 绘图
  • 【Java笔记】LinkedList 底层结构