最近做一个时钟类的产品,想到一个问题:这个时钟产品要求时间精度1ms,对时服务器在局域网内。 但我觉得操作系统进程间分时切片的时间片在10ms~100ms。那么程序中我刚获取到服务器的时间,这时linux把CPU资源切换到其它进程了,可能是几十ms后再切换回来,这时再用从时间服务器获得的时间进行本地对时,岂不是误差在几十ms以上。
补充:看到有些回答文不对题,能不能先看看问题,我强调一下:1)不要提硬件时钟这个方案,这个不是用户方案。用户要求的方案就是从局域网内的时间服务器获取时间到本地,给本地时钟对时。2)我看到有兄弟提出用多线程的做法,多线程切换不也还是时间片的概念吗?如果我把对时放在一个单独的线程里面,我程序刚获取到服务器时间,还没来得及对时,此时时间片被切走了,下次再切回来的时候执行对时代码,误差不也是在几十ms以上。