解释为什么自旋锁不适用于单处理器系统,但通常用于多处理器系统。

  • 自旋锁不适合单处理器的原因是由于当一个进程处于自旋锁状态时说明其正在等待某一个资源,而在单处理器系统中,一旦发生了这种自旋锁,那么拥有资源的那个进程也会由于无法得到CPU而一直等待,这样之后,占用CPU的进程会等待另一个进程释放资源,占用资源的进程会等待另一个进程释放CPU,从而导致程序进入一个死锁的状态,因此单处理器不适合自旋锁
  • 在多处理器中,即使一个进程处于自旋锁状态而占用一个CPU,拥有资源的进程也可以在另外空闲的处理器上执行,直到资源释放,处于忙等的进程这时便可以正常进行,防止了死锁的发生

自旋锁为什么不适用于单处理器系统相关推荐

  1. 【同步与并发】自旋锁、信号量

    在讲自旋锁.信号量之前,先聊一聊为什么要使用自旋锁和信号量?    --    为了保护共享资源不被同时访问,需要用某种互斥机制加以保护. 首先讲应用场景:当某一个执行单元在使用一块共享资源时,是不能 ...

  2. 自旋锁、互斥锁和信号量

    自旋锁 Linux内核中最常见的锁是自旋锁(spin lock).自旋锁最多只能被一个可执行线程持有.如果一个执行线程试图获得一个已经被持有的自旋锁,那么该线程就会一直进行忙循环--旋转--等待锁重新 ...

  3. [内核同步]自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析

    关于进程上下文,中断上下文,请看这篇文章 Linux进程上下文和中断上下文内核空间和用户空间 自旋锁的初衷:在短期间内进行轻量级的锁定.一个被争用的自旋锁使得请求它的线程在等待锁重新可用的期间进行自旋 ...

  4. linux posix 线程池_posix多线程有感--自旋锁

    转自:http://www.csdn123.com/html/blogs/20130509/11141.htm 自旋锁是SMP架构中的一种low-level的同步机制. 当线程A想要获取一把自旋锁而该 ...

  5. linux驱动 自旋锁

    最近在内核频繁使用了自旋锁,自旋锁如果使用不当,极易引起死锁,在此总结一下. 自旋锁是一个互斥设备,它只有两个值:"锁定"和"解锁".它通常实现为某个整数值中的 ...

  6. 自旋锁和互斥锁实例_多线程编程之自旋锁

    一.什么是自旋锁 一直以为自旋锁也是用于多线程互斥的一种锁,原来不是! 自旋锁是专为防止多处理器并发(实现保护共享资源)而引入的一种锁机制.自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用 ...

  7. 正确使用自旋锁、互斥锁

    最近在看alios-things的代码发现驱动程序中大量使用了自旋锁 . 如tty.c里面的函数实现都是通过自旋锁来实现对资源的访问保护. 看到这里首先会有疑问,自旋锁能保护临界区吗? 一般来说,自旋 ...

  8. linux内核 自旋锁示例,自旋锁(示例代码)

    一.什么是自旋锁 一直以为自旋锁也是用于多线程互斥的一种锁,原来不是! 自旋锁是专为防止多处理器并发(实现保护共享资源)而引入的一种锁机制.自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用 ...

  9. 自旋锁以及Java中的自旋锁的实现

    什么是自旋锁 多线程中,对共享资源进行访问,为了防止并发引起的相关问题,通常都是引入锁的机制来处理并发问题. 获取到资源的线程A对这个资源加锁,其他线程比如B要访问这个资源首先要获得锁,而此时A持有这 ...

最新文章

  1. As与强制类型转换的区别以及Is运算符的使用
  2. java连接mysql8
  3. [hypervisor]-AArch64 (hypervisor)Virtualization学习笔记
  4. [项目管理]团队管理中的起点:尊重
  5. java房产源码_基于jsp的房屋交易管理系统-JavaEE实现房屋交易管理系统 - java项目源码...
  6. 一起谈.NET技术,抛砖引玉:我看微软.NET各子技术领域之应用前景
  7. 【逆向知识】开发WinDBG扩展DLL
  8. ubtuun怎么运行PHP文件_解决phpMyAdmin在Ubuntu 16.04/PHP7.0下的Deprecation Notice
  9. 最后一周——数模美赛赛前准备总结
  10. 2019Java视频教程-玩转oracle
  11. java 中级面试题_java中级面试题
  12. IP代理池Proxy_Pool使用教程(Windows版)
  13. 没键盘计算机能启动吗,电脑没有接鼠标键盘为什么会影响电脑的正常开机?
  14. mac下玩英雄联盟LoL国服的新办法
  15. 哈夫曼码的编译码系统
  16. linux邮件客户端配置文件,在Deepin V20下配置Evolution邮件客户端,添加新邮箱全过程...
  17. html 图片加载 占位,css实现图片未加载完成时占位显示
  18. java 四舍六入五成双
  19. 2020.05.26
  20. ctr 平滑_CTR平滑方法

热门文章

  1. 眼花缭乱的家电市场,我们到底需要一台什么样的电视?
  2. 【H5游戏】-用js实现无聊到令人发指的游戏抽【奥特曼】卡牌,打怪兽啦
  3. 《算法笔记》——基础篇习题选择结构
  4. 【微信JSSDK】PHP版微信录音文件下载
  5. 华为路由器负载均衡_华为AR路由器配置双出口静态IP双链路负载 | 铭泰网络
  6. 进制转换(未完待续)
  7. Chapter4.4:综合实例
  8. 复旦大学教授肖仰华:ChatGPT 浪潮下,面向大模型如何做数据治理?
  9. 记录Magisk面具root,并使用HttpCanary获取APP或小程序请求 (一)
  10. Android入门小项目--微信登录界面源码(倒计时、fragement切换、activity信息传递)