struct timeval g_tv_1,g_tv_2;
struct timespec t;
long g_RealDisTime_1;
long g_RealDisTime_2;
struct timespec t;
t.tv_sec = 0;
t.tv_nsec = 8000;
gettimeofday (&g_tv_1, NULL);
nanosleep(&t,NULL);
gettimeofday (&g_tv_2, NULL);
g_RealDisTime_1 = ((g_tv_1.tv_sec * 1000) + (g_tv_1.tv_usec / 1000));
g_RealDisTime_2 = ((g_tv_2.tv_sec * 1000) + (g_tv_2.tv_usec / 1000));
printf ("line %d, use %lu ms\n", __LINE__, g_RealDisTime_2-g_RealDisTime_1);
1.我调用nanosleep函数休眠ms级的时间完全不准,预期8ms,实际打出来10几到30几ms都出现
2.t.tv_nsec = 8000改成t.tv_nsec = 800000;实际打出来结果和1一样。感觉t.tv_nsec这个参数忽略了。
3.t.tv_sec = 1; t.tv_nsec = 800000; 实际打出来结果1000ms左右,同2 感觉t.tv_nsec这个参数忽略了
4.将nanosleep(&t,NULL);改成usleep(40000); 实际打出来结果40-50多ms 勉强符合预期。
5.将usleep(40000); 改成usleep(<20000); 实际都是20ms左右 很不稳定。
为什么不能精确到ms级别的定时???
是虚拟机的问题还是系统的问题我在虚拟机的ubunto上也试过,问题也有。
8 个解决方案
#1
虚拟机的时钟是有问题的,特别是Windows下面的VMWare,简直就是噩梦。
#2
你这不是虚拟机的问题。。
我在虚拟机做了这么长时间,从来没遇到过程序和虚拟机时间的问题。
你很明显是程序问题
#3
http://www.baidu.com/s?bs=vmware+%CA%B5%CA%B1%CA%B1%D6%D3&f=8&wd=vmware+%CA%B1%D6%D3
#4
汗,,
用虚拟机不安装vmtool,你说怎么使用虚拟机。。。
用虚拟机肯定要装vmtool工具。。。。
不安此工具,麻烦不仅仅是时间问题,你后面会发现很多头文件都找不到的
#5
问题是装了VM tool也未必解决问题,我最后都换到Virtual Box和kvm了。
#6
呵呵。LS严重了。我们的同事是虚拟机。呵呵。
那就看你如何解决问题了。还得看你版本。
不要一票否定哦。
呵呵
自己研究研究吧
#7
我也没有说一定不行,但是不行的情况还是不少的,不然也不会有那么多人找解决方案了。
我没有权利决定别人怎么用,但是如果想听我的意见,那还是换换平台比较好,起码我用Windows上的VMware已经6、7年了,时钟一直是个问题,两年前换到Virtual Box(Windows)和kvm(Linux)上以后,再也没有出现过时钟的问题了,可能我几年用的这几十台机器都不适合VMWare吧。
另外说一句无关的话,kvm的性能比VMware高很多,一台双核的机器上,跑ESXi只能支持3个虚拟机就不怎么好了,在kvm下面我跑了5个好像还能加。
我没有权利决定别人怎么用,但是如果想听我的意见,那还是换换平台比较好,起码我用Windows上的VMware已经6、7年了,时钟一直是个问题,两年前换到Virtual Box(Windows)和kvm(Linux)上以后,再也没有出现过时钟的问题了,可能我几年用的这几十台机器都不适合VMWare吧。
另外说一句无关的话,kvm的性能比VMware高很多,一台双核的机器上,跑ESXi只能支持3个虚拟机就不怎么好了,在kvm下面我跑了5个好像还能加。
#8
恩。呵呵。你还比较执着。呵呵
跑虚拟机我就不指望跑几个了。
反正我是没碰到过。
我还是喜欢用vm
#1
虚拟机的时钟是有问题的,特别是Windows下面的VMWare,简直就是噩梦。
#2
你这不是虚拟机的问题。。
我在虚拟机做了这么长时间,从来没遇到过程序和虚拟机时间的问题。
你很明显是程序问题
#3
http://www.baidu.com/s?bs=vmware+%CA%B5%CA%B1%CA%B1%D6%D3&f=8&wd=vmware+%CA%B1%D6%D3
#4
汗,,
用虚拟机不安装vmtool,你说怎么使用虚拟机。。。
用虚拟机肯定要装vmtool工具。。。。
不安此工具,麻烦不仅仅是时间问题,你后面会发现很多头文件都找不到的
#5
问题是装了VM tool也未必解决问题,我最后都换到Virtual Box和kvm了。
#6
呵呵。LS严重了。我们的同事是虚拟机。呵呵。
那就看你如何解决问题了。还得看你版本。
不要一票否定哦。
呵呵
自己研究研究吧
#7
我也没有说一定不行,但是不行的情况还是不少的,不然也不会有那么多人找解决方案了。
我没有权利决定别人怎么用,但是如果想听我的意见,那还是换换平台比较好,起码我用Windows上的VMware已经6、7年了,时钟一直是个问题,两年前换到Virtual Box(Windows)和kvm(Linux)上以后,再也没有出现过时钟的问题了,可能我几年用的这几十台机器都不适合VMWare吧。
另外说一句无关的话,kvm的性能比VMware高很多,一台双核的机器上,跑ESXi只能支持3个虚拟机就不怎么好了,在kvm下面我跑了5个好像还能加。
我没有权利决定别人怎么用,但是如果想听我的意见,那还是换换平台比较好,起码我用Windows上的VMware已经6、7年了,时钟一直是个问题,两年前换到Virtual Box(Windows)和kvm(Linux)上以后,再也没有出现过时钟的问题了,可能我几年用的这几十台机器都不适合VMWare吧。
另外说一句无关的话,kvm的性能比VMware高很多,一台双核的机器上,跑ESXi只能支持3个虚拟机就不怎么好了,在kvm下面我跑了5个好像还能加。
#8
恩。呵呵。你还比较执着。呵呵
跑虚拟机我就不指望跑几个了。
反正我是没碰到过。
我还是喜欢用vm