全部博文(330)
分类: C/C++
2011-01-31 11:10:23
timespec和timeval是POSIX的精度秒以下的时间类型,前者精确到纳秒,后者精确到微秒。定义如下:
当时我要取当前时间0.5秒后的时间,就想当然的给timeval.tv_usec加上了500000。还算了以下整形的表示范围,确定这样做不会导致溢出。可是调试时发现这个时间点怎么都等不来,哪怕是1秒、2秒、3秒后。
问题在于,给timeval.tv_usec加上5*10^5之后,确实没有超出整形的表示范围。但是!tv_usec的范围也仅仅是10^6,这样做tv_usec的值就可能超出10^6。得到的这个时间就是无效的…所以,安全的办法是:
p.s原文地址:, 欢迎访问纯爷们的小生活