我需要一个在Linux下具有1ms分辨率的计时器刻度。它用于递增计时器值,该计时器值又用于查看是否应触发各种事件。由于glibc的要求,POSIX

timerfd_create不是一个选项。我尝试使用timer_create和timer_settimer,但从它们获得的最好结果是10ms分辨率,较小的值似乎默认为10ms分辨率。根据手册页,Getittimer和setitimer的分辨率为10毫秒。

我目前能想到的唯一执行此计时器的方法是在主循环中将clock_gettime与CLOCK_MONOTONIC一起使用,以测试是否已通过ms,并增加计数器(然后检查是否应触发各种事件)。

有比在主循环中不断查询更好的方法吗?建议的解决方案是什么?

我使用的语言是普通的旧c

更新

我正在使用2.6.26内核。我知道您可以使其在1kHz时中断,然后可以将POSIX timer_

*函数编程为最高1ms,但这似乎并不可靠,我也不想使用它,因为在某些情况下它可能需要新的内核系统。一些备用内核似乎仍配置了100Hz。我将需要检测到这一点。该应用程序可能在我的系统以外的其他设备上运行:)

我无法入睡1ms,因为可能有网络事件需要我做出反应。

我的解决方法

由于并不是那么重要,我只声明全局计时器具有100ms的分辨率。使用自己的计时器的所有事件都必须设置至少100毫秒的计时器到期时间。我或多或少在想是否会有更好的方法,因此是一个问题。

为什么我接受答案 我认为自由空间的答案最能说明为什么没有实时Linux系统是不可能实现的。

linux下延时1ms用什么函数,Linux下1ms分辨率定时器推荐方式相关推荐

  1. Linux中fdisk对应的c函数,linux下fdisk命令实战案例之详解

    一.fdisk命令中参数介绍: 1.查看硬盘使用情形#fdisk -l 观察硬盘之实体使用情形 2.fdisk /dev/sda,进入硬盘分割模式1. 输入 m 显示所有命令列示. 2. 输入 p 显 ...

  2. linux下编写打印文件的函数,Linux系统编程笔记-文件IO

    本文主要介绍了如下内容: C标准库函数与系统函数的关系 进程控制块 文件描述符 系统调用:open.close.read.write.lseek.fcntl和ioctl 先导概念 C标准库函数与系统函 ...

  3. 【Linux 内核 内存管理】Linux 内核内存布局 ③ ( Linux 内核 动态分配内存 系统接口函数 | 统计输出 vmalloc 分配的内存 )

    文章目录 一.Linux 内核 动态分配内存 系统接口函数 二.统计输出 vmalloc 分配的内存 一.Linux 内核 动态分配内存 系统接口函数 Linux 内核 " 动态分配内存 & ...

  4. Linux中延时/暂停函数(sleep/usleep/nanosleep/select)的比较、底层实现说明

    本来只是要搞清楚Linux下如何实现延时和暂停,但无意中看到一篇文章介绍了其实现,帮自己窥得一点底层原理. 知其然还要知其所以然,但自己没有这个储备和能力来研究Linux内核实现,特地转载留存. 1. ...

  5. linux内核的延时函数,linux中内核延时函数 (转)

    第一类延时函数原型是:(忙等) void ndelay(unsigned long nsecs); void udelay(unsigned long usecs); void mdelay(unsi ...

  6. 【Linux 内核 内存管理】RCU 机制 ④ ( RCU 模式下更新链表项 list_replace_rcu 函数 | 链表操作时使用 smp_wmb() 函数保证代码执行顺序 )

    文章目录 一.RCU 模式下更新链表项 list_replace_rcu 函数 二.链表操作时使用 smp_wmb() 函数保证代码执行顺序 一.RCU 模式下更新链表项 list_replace_r ...

  7. 【Linux 内核 内存管理】RCU 机制 ③ ( RCU 模式下添加链表项 list_add_rcu 函数 | RCU 模式下删除链表项 list_del_rcu 函数 )

    文章目录 一.RCU 模式下添加链表项 list_add_rcu 函数 二.RCU 模式下删除链表项 list_del_rcu 函数 一.RCU 模式下添加链表项 list_add_rcu 函数 在 ...

  8. linux i2c 读写函数,Linux下读写芯片的I2C寄存器

    要想在Linux下读写芯片的I2C寄存器,一般需要在Linux编写一份该芯片的I2C驱动,关于Linux下如何编写I2C驱动,前一篇文章<手把手教你写Linux I2C设备驱动>已经做了初 ...

  9. linux拷贝文件函数,linux下文件操作的各个函数

    作者:HoytEmail:hoytluo@21cn.com 前言: 我们在这一节将要讨论linux下文件操作的各个函数. 文件的创建和读写 文件的各个属性 目录文件的操作 管道文件 --------- ...

最新文章

  1. 某资深互联网人分析:支付宝面临巨大困难,被微信争夺市场,年轻用户流失严重...
  2. C#设计模式之装饰者
  3. java打印图片到页面_在Java中打印BufferedImage的正确方法
  4. 基于silverlight4(beta)的摄像头应用(Beta2)发布
  5. Visual Studio registry capture utility 已停止工作的解决办法
  6. 一个原来知道却懵懂好久的道理2017-12-08
  7. 不同程序用不同网络_微信小程序直播登场,与平台直播有何不同?
  8. 4月24 利用shell脚本添加环境变量
  9. webstorm怎么汉化
  10. 遇到电脑中病毒了怎么办
  11. 学小易有微型计算机接口答案吗,学小易接口更新+新的接口+成品
  12. 来了!2020 云栖大会 蚂蚁金融科技产品能力再升级
  13. 仿淘宝头像上传功能(三)——兼容 IE6 浏览器。
  14. 【操作系统】虚拟存储器--页面置换算法
  15. MCV模型流程图整理
  16. 专业项目管理软件统御项目管理系统V7.0(oKit)试用感受
  17. 数学建模——决策树(sklearn)
  18. 【微信小程序】-- WXML 模板语法 - 数据绑定(九)
  19. 《微信小程序》初识微信小程序
  20. 使用python玩阴阳师,自动抽到SSR

热门文章

  1. HTTP 和 HTTPS 两种传输协议各自含义是什么?二者使用有什么区别?
  2. Android Studio------------重要提醒
  3. springboot项目接入配置中心,实现@ConfigurationProperties的bean属性刷新方案
  4. Uvaoj 11624 - Fire!
  5. MySQL线上优化_线上MySQL千万级大表,如何优化?
  6. java 循环stringbuffer_java常用类-----StringBuilder和StringBuffer的用法
  7. nvidia-smi 命令详解
  8. 太阳能板清洗机器人科沃斯_太阳能电池板清洁机器人
  9. linux划分root_vg,為Linux添加新硬盤,划分LVM分區
  10. Git 的安装、使用、分支、命令 一篇博客全都学会