Chinaunix
标题:
一个精确获取未来某时刻的函数的疑问
[打印本页]
作者:
hededisanan00
时间:
2013-01-17 14:30
标题:
一个精确获取未来某时刻的函数的疑问
见下面所示是个获取未来某一时刻的函数。但我有几点疑问
1.clock_gettime调用失败时为什么要用:“tp->tv_sec = time(NULL) + 1”而不是“tp->tv_sec = time(NULL)”
2.clock_gettime调用成功时为什么要做判断“if ((int)(tp->tv_sec - t) > 30)”,time函数获取的时间和 clock_gettime获取的时间不可能有个30S的误差吧。
求赐教
static inline void getTimespec(int wait_ms, struct timespec *tp)
{
time_t sec, t;
long long nsec;
sec = 0;
if (wait_ms == NO_WAIT)
{
nsec = 0;
}
else
{
nsec = wait_ms * 1000000LL;
}
if (clock_gettime(CLOCK_REALTIME, tp) == -1)
{
PRINT("getTimespec: clock_gettime call fail, error %d(%s)\n", errno, strerror(errno));
tp->tv_sec = time(NULL) + 1;
tp->tv_nsec = 0;
}
else
{
t = time(NULL) + 1;
if ((int)(tp->tv_sec - t) > 30)
{
tp->tv_sec = t;
tp->tv_nsec = 0;
}
}
nsec += tp->tv_nsec;
PRINT("getTimespec: current time sec = %ld, time = %ld, nsec = %ld, total nsec = %lld\n",
tp->tv_sec, time(NULL)+1, tp->tv_nsec, nsec);
if (nsec >= 1000000000)
{
sec = nsec / 1000000000;
nsec = nsec % 1000000000;
}
tp->tv_sec += sec;
tp->tv_nsec = nsec;
PRINT("getTimespec: after time sec = %ld, time = %ld, nsec = %ld\n",
tp->tv_sec, time(NULL)+1, tp->tv_nsec);
return;
作者:
csumck
时间:
2013-01-17 16:22
這誰寫的代碼,問寫這代碼的人。。。
作者:
hededisanan00
时间:
2013-01-17 19:42
公司的代码,很久前就有了
,
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2