gpt4 book ai didi

c - usleep() 来计算耗时表现得很奇怪

转载 作者:行者123 更新时间:2023-12-02 05:14:39 25 4
gpt4 key购买 nike

我使用下面的代码计算每次连续调用处理程序函数所用的时间(以毫秒为单位)。当我使用 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(&current_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(&current_time,0);
printf("%012.3fms: Handler Called\n",((current_time.tv_usec-start_time.tv_usec)/1000.0));
return;
}

最佳答案

请记住,timeval 结构的 tv_usec 字段永远不会达到(或超过)一百万,相反,秒数会增加。

您还必须在计算中使用 tv_sec 字段。

关于c - usleep() 来计算耗时表现得很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14852434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com