我使用下面的代码计算每次连续调用处理程序函数所花费的时间(以毫秒为单位)。当我使用 usleep(1000) 时,即每次调用之间的 1 毫秒时间差为 10 毫秒,而当我使用 usleep(1000000) 时,即 1 秒,每次调用之间的时间间隔令人惊讶地下降到小于 1 毫秒。以下是代码片段:
#include<stdio.h>
#include<stdlib.h>
#include<sys/time.h>
#include<unistd.h>
struct timeval start_time;
void handler(int);
int main()
{
struct timeval current_time;
int i=0;
gettimeofday(&start_time,0);
gettimeofday(¤t_time,0);
printf("%012.3fms: emulationbegins\n",((current_time.tv_usec-start_time.tv_usec)/1000.0));
while(i++<5)
{
usleep(1000); // compare with usleep(1000000)
handler(i);
}
return 0;
}
void handler(int i)
{
printf("In Handler %d\n",i);
struct timeval current_time;
gettimeofday(¤t_time,0);
printf("%012.3fms: Handler Called\n",((current_time.tv_usec-start_time.tv_usec)/1000.0));
return;
}
请记住,tv_usec
领域的timeval
结构永远不会达到(或超过)一百万,而是增加秒数。
你必须使用tv_sec
字段也在您的计算中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)