社区
Linux/Unix社区
帖子详情
在用户态如何使用原子操作?
abc00000001
2010-01-14 11:47:47
要求连续几个操作不能被打断。
类似于:
u16 t1, t2;
raw_local_irq_save(flg)
t1 = timer[1];
t2 = timer[2];
raw_local_irq_restore(flg);
//do something
...全文
658
7
打赏
收藏
在用户态如何使用原子操作?
要求连续几个操作不能被打断。 类似于: u16 t1, t2; raw_local_irq_save(flg) t1 = timer[1]; t2 = timer[2]; raw_local_irq_restore(flg); //do something
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
abc00000001
2010-01-14
打赏
举报
回复
[Quote=引用 5 楼 fetag 的回复:]
引用 2 楼 abc00000001 的回复:
pthread_mutex_lock 能保证 mutex 互斥,但不能保证CPU时间不被打断啊(当然例中操作很少有机会被打断)
我需要保障CPU只有执行完了这几个操作,才能去执行其它操作(用户态)
你要是想保证不被CPU中断,那就只能是关中断了,可是你的程序能有那么高的权限吗?
[/Quote]
有这个需求,另外它是实时进程,FIFO 调度方式。时间尺度是10us级别的,就这个原子操作而言,要求在少于0.125us(125ns)内保证完成相关操作(CPU@312MHZ)
所以,怎么关中断能保证它的性能不受大的影响?
独孤过儿
2010-01-14
打赏
举报
回复
[Quote=引用 2 楼 abc00000001 的回复:]
pthread_mutex_lock 能保证 mutex 互斥,但不能保证CPU时间不被打断啊(当然例中操作很少有机会被打断)
我需要保障CPU只有执行完了这几个操作,才能去执行其它操作(用户态)
[/Quote]
你要是想保证不被CPU中断,那就只能是关中断了,可是你的程序能有那么高的权限吗?
fpcc
2010-01-14
打赏
举报
回复
或者用事件或信号,只有执行完某些动作,才发出工作信号,进行下一步动作,很多的方法啊。
fpcc
2010-01-14
打赏
举报
回复
那你就把必须做完的锁里加一个控制变量,如果不做完,控制变量就为FALSE,然后下面加一个判断不就成了。
abc00000001
2010-01-14
打赏
举报
回复
pthread_mutex_lock 能保证 mutex 互斥,但不能保证CPU时间不被打断啊(当然例中操作很少有机会被打断)
我需要保障CPU只有执行完了这几个操作,才能去执行其它操作(用户态)
独孤过儿
2010-01-14
打赏
举报
回复
可以用互斥锁来实现pthread_mutex_lock()
独孤过儿
2010-01-14
打赏
举报
回复
所以,怎么关中断能保证它的性能不受大的影响?
=================================
当然是在尽可能小的block内关中断了。也就是这样的结构:
// 关中断
原子操作块
// 开中断
但是要尽量的使 原子操作块 的语句少一些,压缩到最低!只把那些必须执行原子操作的语句放在这里,其余不必要的或者不是很紧要的一律放到外面去,这样就能保证开关中断的时间差最小了
Linux基础 --
用户
态
原子操作
之3种实现
在Linux
用户
态
编程中,
原子操作
通常
使用
内建的
原子操作
函数或GCC提供的内置函数来实现。这些操作可以保证在多线程环境中数据的同步和一致性。
MongoDB
原子操作
详解
原子操作
是指在执行过程中不可中断的操作,它要么完全执行成功,要么完全不执行。换句话说,在执行
原子操作
的过程中,不会受...理解和合理
使用
MongoDB 的
原子操作
,对于确保数据的可靠性和应用程序的稳定性至关重要。
linux
原子操作
在这个示例中,
使用
了互斥锁pthread_...以下例子展示如何在Linux内核模块中
使用
原子操作
函数来执行一个原子的计数器递增操作。Linux内核中的
原子操作
是一种操作,它是不可中断的,不会被其他处理器中断或调度的操作。
Go语言
原子操作
可以
使用
Go语言的sync包中的Mutex类型调用加锁和解锁的方法,但是加锁操作因为涉及内核
态
的上下文切换会比较耗时、代价比较高,对于基本数据类型我们还可以
使用
原子操作
来保证并发安全,因为
原子操作
在
用户
态
就可以...
用户
态
的原子变量
GCC(GNU Compiler Collection)内建
原子操作
函数说明 6.51 Legacy __sync Built-in Functions for Atomic Memory Access 编译器内建,可以代替多线程全局变量自加、自减等操作,并且效率高于
使用
线程锁。 ...
Linux/Unix社区
23,215
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章