Linux 内核自旋锁
发布日期:2021-06-30 18:54:36
浏览次数:2
分类:技术文章
本文共 683 字,大约阅读时间需要 2 分钟。
为什么需要内核自旋锁?
现在很多CPU都是几核几核的了,如果有一个变量A,CPU-X正在访问,突然CPU-Y也过来访问他,这时候就可能出现问题,因为这个A非常重要,可能导致系统崩溃,中断异常等。
我们来看之前说的TP驱动里面的代码
void gtp_irq_enable(struct goodix_ts_data *ts){ unsigned long irqflags = 0; GTP_DEBUG_FUNC(); spin_lock_irqsave(&ts->irq_lock, irqflags); if (ts->irq_is_disable) { enable_irq(ts->client->irq); ts->irq_is_disable = 0; } spin_unlock_irqrestore(&ts->irq_lock, irqflags);}
在进行中断操作的时候,用到了自旋锁,就是担心正在操作的时候又被调用,听起来有点拗口,但是就是那么一回事。
自旋锁(spinlock)是用在多个CPU系统中的锁机制,当一个CPU正访问自旋锁保护的临界区时,临界区将被锁上,其他需要访问此临界区的CPU只能忙等待,直到前面的CPU已访问完临界区,将临界区开锁。自旋锁上锁后让等待线程进行忙等待而不是睡眠阻塞,而信号量是让等待线程睡眠阻塞。自旋锁的忙等待浪费了处理器的时间,但时间通常很短,在1毫秒以下。
自旋锁用于多个CPU系统中,在单处理器系统中,自旋锁不起锁的作用
转载地址:https://linus.blog.csdn.net/article/details/82992205 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月05日 11时10分56秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
知识点记录-springboot2.1集成rabbitmq
2019-04-30
微服务springcloud2系列篇-配置与注册nacos组件
2019-04-30
数据库系列篇mysql8-分库分表中间件mycat(WINDOWS环境)
2019-04-30
用户权限设计-基于RBAC模型
2019-04-30
微服务springcloud2系列篇-网关GATEWAY跨域问题
2019-04-30
Java并发以及多线程基础
2019-04-30
软件质量的8个特性
2019-04-30
应届渣渣前端的艰难求职之路
2019-04-30
2021年不可错过的17种JS优化技巧(一)
2019-04-30
2021年不可错过的17种JS优化技巧(二)
2019-04-30
月薪15~20k的前端面试问什么?
2019-04-30
一文学会使用Vue3
2019-04-30
我是如何看Vue源码的
2019-04-30
在 Vue 中用 Axios 异步请求API
2019-04-30
LVM逻辑卷------基础命令详解(三分钟入门)
2019-04-30
LVM逻辑卷------详细操作过程(三分钟上手)
2019-04-30
mysql——介绍及安装与基本用法
2019-04-30