tool portable gratis for descargar best app windows go timer

portable - timer windows 10



Temporizadores de alta resoluciĆ³n(precisiĆ³n de milisegundos) en Go on Windows (1)

Estoy tratando de utilizar el tiempo de Go. El time.Timer s para programar tareas que deben ejecutarse en el orden correcto con una precisión del orden de medio milisegundo. Esto funciona perfectamente bien en OSX y en Linux, pero falla siempre en Windows.

El siguiente código demuestra el problema. Establece 5 temporizadores, el primero a 1 ms, el segundo a 2 ms, ..., y el último a 5 ms. Una vez que un temporizador dispara, su número se imprime. En OSX y Linux, esto obviamente produjo "12345" como salida, pero en Windows los números son más o menos aleatorios (probados en Win 7 y 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 } } }

Creo que este comportamiento se debe a los cambios realizados en Go 1.6 ( https://golang.org/doc/go1.6#runtime , 4º párrafo), donde la precisión del temporizador de Windows se redujo de 1 ms a 16 ms, aunque también debería haber ocurrido con intervalos más cortos (del orden de 100 μs) antes.

¿Hay alguna forma de restablecer la precisión global del temporizador de Windows a 1 ms o acceder a un temporizador de alta resolución que haría que el ejemplo anterior funcione?


Desde Go 1.7, los temporizadores ahora tienen una resolución más alta y este problema no debería ocurrir.