spin_lock和mutex两个都是互斥锁,不同的地方是spinlock是忙等待,不支持睡眠
mutex是可以睡眠,把当前等待mutex的task置于睡眠等待队列中,等mutex被释放之后再调度。

mutex:互斥锁
1,mutex获取一旦失败,进程会进入sleep
2,防止多处理器中并发访问临界区,防止内核抢占造成的竞争

spin_lock:自旋锁
1,忙等待,等待该锁的cpu会耗费大量资源;无调度开销,忙等待的task不能被其他task打断
2,进程的抢占被禁止
3,锁定期间不能睡眠。
4,防止多处理器并发访问临界资源
5,可以被中断打断,进而去抢占

spin_lock_irqsave:禁止内核抢占,关闭中断,保存中断状态寄存器的标志位

spin_lock_irq() = spin_lock() + local_irq_disable()
spin_unlock_irq = spin_unlock() + local_irq_enable()
spin_lock_irqsave = spin_lock() + local_irq_save()
spin_lock_irqrestore() = spin_unlock() + local_irq_restore()
spin_lock_bh() = spin_lock() + local_bh_disable()
spin_nlock_bh() = spin_unlock() + local_bh_enable()

spinlock和mutex的区别相关推荐

  1. .net framework 4中SpinLock和lock的区别

    SpinLock,自旋锁.尝试获取该锁的线程持续不断的check是否可以获得.此时线程仍然是激活状态,只是在空转,浪费cpu而已.但是spinlock避免了线程调度和上下文切换,如果锁的时间极短的话, ...

  2. Spin lock 与mutex 的区别--2011.01.06

    POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API.线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用 ...

  3. 小米嵌入式研发工程师校招面试总结

    小米嵌入式研发工程师校招面试总结 21-01-22更新:经过几轮面试,终于收到了小米offer,以下为博主总结的相关资料,希望能帮到求职的你. 刚参加完小米面试,博主一共经历了三面,面试相对简单,面试 ...

  4. 嵌入式邻域面试官必问的问题

    简介:本文汇总了嵌入式行业在校招或者社招中,笔试和面试常问或常考的题目,很多都是基础知识,但需要你对问题有个深刻的认识和理解.话不多说,请看汇总: 本文参考:小米嵌入式研发工程师校招面试总结 1.C语 ...

  5. 【linux】spinlock 的实现

    一.什么是spinlock spinlock又称自旋锁,是实现保护共享资源而提出一种锁机制.自旋锁与互斥锁比较类似,都是为了解决对某项资源的互斥使用 无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一 ...

  6. 临界区,互斥量,信号量,事件的区别

    临界区(Critical section)与互斥体(Mutex)的区别 1.临界区只能用于对象在同一进程里线程间的互斥访问:互斥体可以用于对象进程间或线程间的互斥访问. 2.临界区是非内核对象,只在用 ...

  7. spinlock剖析与改进

    1, spinlock介绍 spinlock又称自旋锁,线程通过busy-wait-loop的方式来获取锁,任何时刻时刻只有一个线程能够获得锁,其他线程忙等待直到获得 锁.spinlock在多处理器多 ...

  8. Linux并发与同步专题 (4) Mutex互斥量

    关键词:mutex.MCS.OSQ. 信号量是在并行处理环境中对多个处理器访问某个公共资源进行保护的机制,mutex用于互斥操作. 信号量的count初始化为1,down()/up()也可以实现类似m ...

  9. Pthreads并行编程之spin lock与mutex性能对比分析(转)

    POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API.线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用 ...

最新文章

  1. 【C 语言】C 字符串 ( 表示方法 | strcpy | strcat | strlen | strcmp )
  2. java 智能家居管理系统_智能家居系统手机客户端应用源码
  3. 文巾解题35. 搜索插入位置
  4. Serverless X OpenKruise 部署效率优化之道
  5. 【Matlab】parfor并行运算如何显示进度条?
  6. Elasticsearch 安装配置 外网访问 及 后台启动
  7. 监视和检测Java应用程序中的内存泄漏
  8. 仿苹果涂鸦软件_这些iPhone自带软件,学会一个少装十几个APP,16G手机也够用
  9. 一个简单的Java EEDocker示例
  10. 深度学习:淘气3000问
  11. ArcGIS基础:面数据空洞填充的方法
  12. 基于zookeeper3.4.6的源码研究(三)
  13. 网上卖生鲜产品怎么做引流?生鲜电商的引流方法有哪些?特点是什么?
  14. MySQL-SQL语句优化
  15. 京东api接入的几个坑(宙斯) 转载
  16. 删除单号中的符号并查询快递物流信息
  17. html li被挤下去,求助CSS大大页面小化后变形被挤下去了
  18. vue项目 报sockjs.js?9be2:1606 GET http://192.168.43.226:8080/sockjs-node/info?t=1584966826465 net::ERR_
  19. Tomcat配置HTTPS方式生成安全证书
  20. aws dynamodb 使用awsapi和PartiQL掌握dynamodb的CRUD操作

热门文章

  1. 基于springboot实现茶室客户自带茶品管理系统演示【附项目源码+论文说明】分享
  2. tools.php discuz,Discuz:Tools实用工具简明教程
  3. 颜色名、颜色16进制值、颜色rgb值对应表
  4. wxpy 机器人报错解决方案
  5. frpc启动失败总结
  6. 小偷进屋偷走食物后留字条:对不起 一定还你
  7. java模拟器怎么安装路径_如何使用appium访问来自不同网络位置的路径,直接在模拟器中安装移动应用程序(Android / iOS)?...
  8. 福禄克FLUKE TI480PRO红外热像仪技术参数
  9. No.011 组合 vs 继承
  10. 中国平安旗下「壹账链」和IBM超级账本Fabric的“血缘”关系