gpt4 book ai didi

c - 当我在无限循环中使用 gettimeofday() 时程序意外停止

转载 作者:太空宇宙 更新时间:2023-11-04 08:01:29 24 4
gpt4 key购买 nike

我编写了一段代码来确保 while(1) 循环的每个循环都花费特定的时间(在本例中为 10000µS,等于 0.01 秒)。问题是这段代码在开始时运行良好,但不知何故不到一分钟后就停止了。就像访问linux时间有限制一样。现在,我正在初始化一个 bool 变量,使这个时间计算只运行一次而不是无限次。由于性能随时间变化,因此最好计算每个循环的计算时间。有没有其他方法可以做到这一点?

void some_function(){
struct timeval tstart,tend;
while (1){
gettimeofday (&tstart, NULL);
...
Some computation
...
gettimeofday (&tend, NULL);
diff = (tend.tv_sec - tstart.tv_sec)*1000000L+(tend.tv_usec - tstart.tv_usec);
usleep(10000-diff);
}
}

最佳答案

from man-page of usleep

 #include <unistd.h>

int usleep(useconds_t usec);

usec 是 unsigned int,现在猜猜下一行中 diff > 10000 时会发生什么

 usleep(10000-diff);

关于c - 当我在无限循环中使用 gettimeofday() 时程序意外停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46400250/

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