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. 如何用JavaScript操作form表单组件?
  2. 可持久化线段树(静态)【学习笔记】
  3. android view的隐藏和显示_Android使用Viewpager实现3D卡片翻动效果
  4. js高级技巧之柯里化
  5. c语言保存文件格式如何改回来,急求如何将下列C语言程序数据存储到文件中?...
  6. dijkstra算法_Python实现图的经典DFS、BFS、Dijkstra、Floyd、Prim、Kruskal算法
  7. 2020年9月25日-01-项目启动(团队分工)+带宽,网络速度的计算
  8. 作家如何利用Git更好地完成工作
  9. 送女朋友的java小程序_用C编写一个送给女朋友的情人节小程序 可爱!
  10. easyui-treegrid的案例
  11. linux 用户管理、权限管理
  12. 【读书笔记】金字塔原理-呈现金字塔
  13. 【CSS3盒子模型新样式】boder-box
  14. 眼镜寿命不仅跟镜架材质有关,还跟习惯有关系!
  15. 增加设备分类号之后,设备名称SOM聚类前九个子类
  16. 华为智慧屏鸿蒙系统深度评测,八个维度深度评测华为荣耀智慧屏
  17. gii无法访问 yii2_YII2框架访问gii、debug页面404的错误解决方法
  18. 如何成为一名云计算工程师
  19. 人脸识别考勤系统安卓APP(手把手教学-手动滑稽)
  20. 印度萌新令人绝望的操作:提交PR“轰炸”近40万开发者,GitHub负责?

热门文章

  1. Linux课程笔记 Day09 课上内容总结 MySql,Php的安装及Apache,Nginx,Php的优化
  2. R语言使用dplyr包的arrange函数进行dataframe排序、arrange函数基于一个字段(变量)进行降序排序实战
  3. matlab 实现ahp算法,用Matlab实现AHP的算法
  4. CacheStorage 浏览器缓存
  5. 使用selenium将网页保存网页截图,长截图,html文件,mhtml文件
  6. ASP 开发工厂不良品统计表+生产电子看板实践:1
  7. rabbitmq fanout java_spring boot整合RabbitMQ(Fanout模式)
  8. C#操作Word2010实现
  9. .NET(C#、VB)APP开发——Smobiler平台控件介绍:TTS
  10. 找出字串在文本中出现或未出现的情况