我的需求是这样的,我希望实现的周期为T的循环如下,精度希望达到微秒级:
while(true)
{
doSomeThing();//做一些计算或者端口读取的工作,做这些事情的时间必然小于T
waitUntilNextCycle(T);//阻塞在此,检查定时器,直到本次循环的时间达到T,此时重置时钟,重新计时
}
其中waitUntilNextCycle(T)的作用方式与usleep这类函数并不相同,并不是简单阻塞时间T,而是使一次循环的时间达到T。
我使用的是linux系统,如果必要的话可以使用rt系统,我想请大家解答我如下几个问题:
1、现在我并没有购置硬件定时器,在不采用任何采集卡的情况下,仅添置一张定时器卡能否实现这样的循环?
2、在linux系统中要实现这样微秒级的精度的循环,是否一定要依靠外部硬件时钟?
新人欢迎大家指教。