大佬教程收集整理的这篇文章主要介绍了Go on Windows中的高分辨率计时器(毫秒精度),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
以下代码演示了此问题.它设置5个定时器,第一个为1 ms,第二个为2 ms,……,最后一个为5 ms.计时器触发后,会打印其编号.在OSX和Linux上,这显然产生了“12345”作为@L_696_4@,但在Windows上,数字或多或少随机(在Win 7和Windows Server 2012上测试).
package main import ( "fmt" "time" ) func main() { var timer1,timer2,timer3,timer4,timer5 *time.Timer timer1 = time.NewTimer(1 * time.Millisecond) timer2 = time.NewTimer(2 * time.Millisecond) timer3 = time.NewTimer(3 * time.Millisecond) timer4 = time.NewTimer(4 * time.Millisecond) timer5 = time.NewTimer(5 * time.Millisecond) // should print 12345 for { SELEct { case <-timer1.C: fmt.Print("1") case <-timer2.C: fmt.Print("2") case <-timer3.C: fmt.Print("3") case <-timer4.C: fmt.Print("4") case <-timer5.C: fmt.Print("5") case <-time.After(200 * time.Millisecond): return // exit the program } } }
我认为这种行为是由于Go 1.6(https://golang.org/doc/go1.6#runtime,第4段)中所做的更改,其中Windows计时器精度从1毫秒减少到16毫秒,尽管它也应该以更短的间隔发生(大约100微秒)之前.
有没有办法将全局Windows计时器精度重置为1毫秒,或访问一个高分辨率计时器,使上面的例子工作?
以上是大佬教程为你收集整理的Go on Windows中的高分辨率计时器(毫秒精度)全部内容,希望文章能够帮你解决Go on Windows中的高分辨率计时器(毫秒精度)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。