如何实现操作不被其他进程打断?

lilingcx 2007-05-25 12:31:17
大概是这样的一个程序,目标是为了测试系统的timer interrupts是否正常
/proc/interrupts文件中有一行timer记录着系统的timer interrupts次数,而且不断的增加中.我要计算在两个时间点(不一定是wall time)下,其增加值是否和预期的一样.
实现方法大概如下:
if(时间点1)
次数1=读(/proc/interrupts文件);
if(时间点2)
次数2=读(/proc/interrupts文件);
每个时间点的次数=(次数2-次数1)/(时间点2-时间点1)
.....

现在的问题是我如何才能保证在时间点1成功后,立刻就去读取(/proc/interrupts文件,而不会在两者的时间窗口被其他进程打断呢?要是被打断,那么计算出来的值将不会正确.

请各位高手提出自己的看法...谢谢

...全文
383 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lilingcx 2007-06-07
  • 打赏
  • 举报
回复
谢谢大家的帮助.
我后来试过 asm/atomic.h 这个方法不过老是编译不过.

后来测试换了个思路,避免了上面说的问题.

还是非常谢谢大家的帮助.
blh 2007-05-27
  • 打赏
  • 举报
回复
关闭时钟 :)
roadingyh 2007-05-27
  • 打赏
  • 举报
回复
如何实现操作不被其他进程打断? ??

忽略一切信号..........
lilingcx 2007-05-26
  • 打赏
  • 举报
回复
To awjx(啦啦啦);

这个程序是要在Linux上应用的.Linux估计不是实时操作系统....
疑问:Linux应该支持多线程,但是每个时间里面CPU仅仅执行一个线程,执行完线程A或者执行过程中被打断去执行线程B
Linux中有一个atomic operate的概念,就是保证I/O相关操作不被其他打断,是否也能有相关的方法保证我这个在时间点1立刻读取数据的过程不被打断呢?
关于线程同步锁,不是很了解,针对这个程序能否给点提示?
Arrivaloffittest 2007-05-26
  • 打赏
  • 举报
回复
再说原子操作导致时间中断丢失,应该在一个时间中断间隔之内完成你的操作,
这里你用到了读文件系统调用,绝不要使用原子操作了,否则如果读阻塞,你的系统就永远挂在那里了
Arrivaloffittest 2007-05-26
  • 打赏
  • 举报
回复
要用内核的原子操作 asm/atomic.h,不过
#warning Using kernel header in userland program. BAD!

awjx 2007-05-25
  • 打赏
  • 举报
回复
这种应用,估计只能用实时操作系统。
或都用单任务的DOS系统。
不过我也还没怎么弄明白楼主的用意?
如果是在一个线程中,当然是顺序执行的,怎么会被打断?
如果是多线程,可以用锁来同步啊?

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧