linux下写个C语言程序,要求有0.5微秒以下的延时,要怎样写

linux下写个C语言程序,要求有0.5微秒以下的延时,要怎样写,第1张

0.5微秒延迟相当于纳秒级的了,内核空间有提供纳秒级的延迟

#include <linux/delay.h>

ndelay(int n) 延时n纳秒

但是时间应该是不准的。

较为准确的延迟可以用select,但也只是us级的。

struct timeval tv

tv.tv_sec=0

tv.tv_usec=iUsec //微秒

select(0,NULL,NULL,NULL,&tv)

sleep()函数大概只能精确到50ms左右,你用sleep(10)是肯定不行的,如果你要精确的定时的话可以使用QueryPerformanceFrequency()函数,用法为:

LARGE_INTEGER litmp

LONGLONG QPart1,QPart2

double dfMinus, dfFreq, dfTim

QueryPerformanceFrequency(&litmp)

dfFreq = (double)litmp.QuadPart// 获得计数器的时钟频率

QueryPerformanceCounter(&litmp)

QPart1 = litmp.QuadPart// 获得初始值

do

{

QueryPerformanceCounter(&litmp)

QPart2 = litmp.QuadPart//获得中止值

dfMinus = (double)(QPart2-QPart1)

dfTim = dfMinus / dfFreq// 获得对应的时间值,单位为秒

}while(dfTim<0.001)

其定时误差不超过1微秒,精度与CPU等机器配置有关。

×××××××××××××××××××××××××

sleep()函数的中等待时间是以毫秒计算的,所以等待1秒就是sleep(1000),如果要让等待时间小于一秒,那么就让传入的参数小于1000就行了.

比如,等待0.1秒:

sleep(100)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7532923.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存