linux下延时1ms用什么函数,Linux下1ms分辨率定时器推荐方式
我需要一個(gè)在Linux下具有1ms分辨率的計(jì)時(shí)器刻度。它用于遞增計(jì)時(shí)器值,該計(jì)時(shí)器值又用于查看是否應(yīng)觸發(fā)各種事件。由于glibc的要求,POSIX
timerfd_create不是一個(gè)選項(xiàng)。我嘗試使用timer_create和timer_settimer,但從它們獲得的最好結(jié)果是10ms分辨率,較小的值似乎默認(rèn)為10ms分辨率。根據(jù)手冊頁,Getittimer和setitimer的分辨率為10毫秒。
我目前能想到的唯一執(zhí)行此計(jì)時(shí)器的方法是在主循環(huán)中將clock_gettime與CLOCK_MONOTONIC一起使用,以測試是否已通過ms,并增加計(jì)數(shù)器(然后檢查是否應(yīng)觸發(fā)各種事件)。
有比在主循環(huán)中不斷查詢更好的方法嗎?建議的解決方案是什么?
我使用的語言是普通的舊c
更新
我正在使用2.6.26內(nèi)核。我知道您可以使其在1kHz時(shí)中斷,然后可以將POSIX timer_
*函數(shù)編程為最高1ms,但這似乎并不可靠,我也不想使用它,因?yàn)樵谀承┣闆r下它可能需要新的內(nèi)核系統(tǒng)。一些備用內(nèi)核似乎仍配置了100Hz。我將需要檢測到這一點(diǎn)。該應(yīng)用程序可能在我的系統(tǒng)以外的其他設(shè)備上運(yùn)行:)
我無法入睡1ms,因?yàn)榭赡苡芯W(wǎng)絡(luò)事件需要我做出反應(yīng)。
我的解決方法
由于并不是那么重要,我只聲明全局計(jì)時(shí)器具有100ms的分辨率。使用自己的計(jì)時(shí)器的所有事件都必須設(shè)置至少100毫秒的計(jì)時(shí)器到期時(shí)間。我或多或少在想是否會(huì)有更好的方法,因此是一個(gè)問題。
為什么我接受答案 我認(rèn)為自由空間的答案最能說明為什么沒有實(shí)時(shí)Linux系統(tǒng)是不可能實(shí)現(xiàn)的。
總結(jié)
以上是生活随笔為你收集整理的linux下延时1ms用什么函数,Linux下1ms分辨率定时器推荐方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转载] JAVA数组实现学生成绩统计
- 下一篇: linux磁盘fio压力测试,fio进行