【发布时间】:2014-03-30 18:40:55
【问题描述】:
我尝试过这样的事情:
struct timeval time1,time2;
double time3,time4;
gettimeofday(&time1, NULL);
gettimeofday(&time2, NULL);
time3 = (time1.tv_sec + 1) * 1000000 + time1.tv_usec;
time4 = (time2.tv_sec) * 1000000 + time2.tv_usec;
while(time3 > time4){
...
gettimeofday(&time2, NULL);
time4 = (time2.tv_sec) * 1000000 + time2.tv_usec;
}
但它并没有按照应有的方式工作。
【问题讨论】:
-
您不应该使用睡眠的任何特殊原因? (linux.die.net/man/3/sleep)
-
“它没有按应有的方式工作” - 那么它以哪种方式工作?它持续不到1秒吗?超过 1 秒?有时少有时多?
-
当心
secs * 1000000中的溢出。改用secs * 1000000.0 -
那你为什么不只是等待它而不是循环。当前所有的操作系统都提供了在指定的超时时间内等待网络数据的方法。
标签: c time while-loop