首页 > 其他分享 >22 同步与互斥(八)总结

22 同步与互斥(八)总结

时间:2023-05-01 16:12:35浏览次数:39  
标签:同步 22 lock 使用 互斥 mutex semaphore spinlock

1 实现的基础

同步与互斥的基本操作:spinlock;semaphore;mutex

而实现上述操作的基本是基于:原子操作;中断屏蔽;抢占屏蔽来实现的

对于spinlock;semaphore;mutex等相关的操作,基本实现都是lock时,放回成功表示上锁成功。

否则就需要等待对应unlock后才能返回成功,进入临界区

2 彼此的关联与区别

2.1 spinlock与semaphore mutex

  • semaphore和mutex的实现都依赖于spinlock。所以spinlock相对于semaphore、mutex更加底层
  • spinlock不会休眠;而semaphore和mutex会休眠

2.2 semaphore与mutex

mutex可以认为是semaphore的一种特殊实现。

semaphore的count可以为任意值,并无限制。而mutex中count只能为0(lock),1(unlock),-1(lock wait)

semaphore mutex
几把锁 任意,可设置 1
谁能解锁 别的程序、中断等都可以 谁加锁,就得由谁解锁(一般,最好)
多次解锁 可以 不可以,因为只有1把锁
循环加锁 可以 不可以,因为只有1把锁
任务在持有锁的期间可否退出 可以 不建议,容易导致死锁
硬件中断、软件中断上下文中使用 可以 不可以

对于内核而言推荐使用mutex

3 lock的使用原则

3.1 irq、irqsave、bh等使用原则

行与列事件竞争时,需要使用的lock类型

3.2 spinlock与mutex的使用原则

  • 临界区很小使用spinlock;临界区很大使用mutex

  • 临界区存在阻塞(即上下文的切换),不能使用spinlok,需要使用mutex。

    因为spinlock会去禁止抢占,并spin。可能导致死锁或崩溃。详见同步与互斥的spinlock一章

  • 在中断中只能使用spinlock。因为mutex可能会休眠导致中断阻塞,这是不可接受的。

标签:同步,22,lock,使用,互斥,mutex,semaphore,spinlock
From: https://www.cnblogs.com/burnk/p/17366620.html

相关文章

  • 21 同步与互斥(七)互斥量
    1简介mutex相对于semaphore更加高效。mutex在面对SMP时,如果mutex在别的CPU上运行,而“我”是唯一在等待这个mutex的进程。此时“我”是不会去休眠的,而是原地spin2mutex的结构和API2.1mutex结构structmutexmy_mutex;structmutex{ /*1:unlocked,0:locked,negativ......
  • 2202年了,继续大比拼ViT、MLP、CNN结构有意义吗??
    文|卖萌菌近日,MSRA发布了一篇题为《Transformer不比CNN强LocalAttention和动态Depth-wise卷积前世今生》的博文,再次谈论了这个老生常谈的话题。文中提到,Depth-wiseCNN和attention存在高度相似的结构,调参优化之后,从结果上来看,指标上也没相差多少。如果从输入到输出的传播路......
  • P1220 关路灯
    题意:某一村庄在一条路线上安装了\(n\)盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少)。老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯。为了给村里节省电费,老张记录下了每盏路灯的位置和功率,他每次关灯时也都是尽快地......
  • Linux核心命令22Linux系统信息网络磁盘用户
    Linux核心命令21系列文章目录快速上手Linux核心命令(一):核心命令简介快速上手Linux核心命令(二):关机、重启快速上手Linux核心命令(三):文件和目录操作命令快速上手Linux核心命令(四):文件内容相关命令快速上手Linux核心命令(五):文本处理三剑客快速上手Linux核心命令(六):Linux的文本编辑器vi和......
  • 时间转化Fri Apr 07 11:43:24 +0800 2022
    原格式:FriApr0711:43:24+08002022灵感:获取微博某时间段到...之间的内容转化格式:2022-04-07#实现importdatetimedate_str="FriApr0711:43:24+08002022"date=datetime.datetime.strptime(date_str,"%a%b%d%H:%M:%S%z%Y")formatted_date=date.str......
  • EMNLP 2022 最佳论文揭晓!这脑洞绝了….
    前言读文章之前,我们先来思考人工智能中一个核心而底层的问题:什么是抽象以及它能够给我们带来什么?我们这里说的“抽象”是一个认知学上的概念,著名学者ChatGPT说:“抽象是指不依赖于具体事物或实例,而是指抽取共同点或基本特征的思维过程。”在人类智能中,抽象是一个很底层很基本的......
  • cocoa线程同步synchronized
    synchronized关键字   1.synchronized方法:通过在方法声明中加入synchronized关键字来声明synchronized方法。如:publicsynchronizedvoidaccessVal(intnewVal);synchronized方法控制对类成员变量的访问:每个类实例对应一把锁,每个synchroni......
  • 面向对象程序设计题目集总结blog2-22206110-胡瑞杰
    一、前言第二次在博客园上发布面向对象程序设计题目集的总结博客。经过几周的学习,面向对象的理念更加深入。虽然已经学了些面向对象程序设计,学好这部分内容还是有较大难度。关于知识点本次的题目集所体现的知识点已经不仅限于Java的语法知识,还需要考虑设计问题,不......
  • OOP训练集04-06总结(22201237-周琪)
    一、前言  在本次Blog必须分析题目集4的7-1、题目集5的7-5、7-6,题目集6的7-1,而这四道题目都是比较难的题目,除这四道题之外的题目,还会再总结几道踩坑较多、难度相对较低的题目。关于此次Blog需要总结的题目集的难度,总体来说还是比较大的,相较于之前的题目集,难度提升了很多,在之......
  • 转 LSI SAS 1068E Raid CentOS 5.7 安装浪潮NF5220
    (转)LSISAS1068ERaidCentOS5.5安装实例浪潮NF5220系列分类:linux 新来了一批服务器,全都是清一色的国产服务器,相同的阵列卡,令人头疼的是Linux标准内核不包含该raid驱动,需要单独安装,如果是新升级内核,肯定需要编译进去该raid驱动。一、先把主板自带的驱动光盘中的驱动文件......