码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Linux常用锁


    Linux常用锁

    • 互斥锁
    • 读写锁
    • 自旋锁

    互斥锁

    参考前文🔗

    递归锁:在同一个线程可以多次获取同一个锁,不会产生死锁;

    非递归锁:在同一个线程中,加锁后不可以再次获取该锁,如果获取可能产生死锁;

    Linux的互斥量pthread_mutex_t是非递归锁,但是可以在创建互斥量时设置PTHREAD_MUTEX_RECURSIVE属性,将pthread_mutex_t设置为递归锁。

    读写锁

    读写锁有三种状态:读模式下加锁、写模式下加锁、不加锁。写模式下的读写锁一次只有一个线程可以占有,读模式下的读写锁多个线程可以同时占有。
    写加锁状态时,所有试图加锁的线程都会被阻塞。
    读加锁状态时,所有试图在读模式下加锁的线程都可以得到访问权,但是希望在写模式下加锁的线程会被阻塞,直到所有读锁释放
    为了避免写模式锁请求一直不能满足,大多数操作系统会阻塞随后的读模式加锁请求。

    互斥锁和读写锁对比:

    互斥锁只有锁住和不加锁的状态,而且一次只有一个线程可以加锁
    读写锁和互斥锁有些类似,但是并行性更高,有三种状态如上。
    读写锁适合的场景就是对临界资源读的次数远大于写的次数的情况。

    自旋锁

    自旋锁就是某个线程想要进入临界区时,如果临界区已经被加锁,那么自旋锁并不会阻塞线程,而是轮询检测自旋锁的状态,也就是自旋。本质上是为了减少线程阻塞挂起再唤醒产生的消耗。在自旋期间,CPU不能做其他事,所以自旋锁适合临界区的代码非常短的场景,开销会非常小。内核的一些数据结构中自旋锁被广泛的使用。

    互斥锁和自旋锁对比:
    实际中很多互斥量的实现其实非常高效,比如有些互斥量在申请锁的时候会自旋一段时间,自旋时间超过某个阈值才会休眠。在之前使用自旋锁的地方使用这些高效的互斥量性能也不差。还有由于现代处理器的进步,上下文切换也越来越快。

  • 相关阅读:
    【SOLIDWORKS学习笔记】特征成型
    数据结构课设:图书信息管理--顺序存储和链式存储
    性能调优——小小的log大大的坑
    【车载AI音视频电脑】车载管理软件,轨迹回放,远程录像回放,定位
    【附源码】Python计算机毕业设计美容院管理系统
    LLVM IR 构建 分析 转换 优化 IRBuilder Pass AI编译器后端代码生成
    二次阅读Nacos源码——Nacos自动服务注册架构设计原理
    STM32 HAL库串口同时收发,接收卡死?
    柱状图 kate
    Mysql 8手动终止某个事务并释放其持有的锁
  • 原文地址:https://blog.csdn.net/sqjddb/article/details/126686182
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号