sleep()函数结果不对啊???

来源:百度知道 编辑:UC知道 时间:2024/06/18 09:15:05
我用的是VxWorks/Tornado2.2的仿真环境,执行以下程序发现延迟不对!!!!!!

void delay_t()
{
int i=0;
for(i=1;;i++)
{
sleep(1);
printf("%d\n",i);
}
}
仔细跟着电脑里面的时间秒表数了下,发现我的这个数字并不是一秒打一个,是一秒多,至少1.5秒感觉。我用的是仿真,请问这个是怎么回事???是哪里设置不对还是怎么回事,怎么弄啊,谢谢了!!

vxWorks有sleep()跟nanosleep()的APIs;sleep()的单位是秒,nanosleep()的单位是纳秒.

他的文档中有提到sleep()的结果有可能会比你所指定的秒数还长些。
你可以试试taskDelay( ),或是调调看这个程序的priority.

sleep(t)中t为毫秒数

把sleep(1)改成delay(1000)看看,应该不会有问题啊!

用while循环,防止越界。