sommeil interne se fait avec le temps absolu: si vous appelez Sleep(n)
au moment T
le programme devrait pas se réveiller après n
temps, mais à temps T + n
.
Ceci est généralement préférable car:
le temps ne coule pas habituellement en arrière
en raison de la programmation OS retarde un programme qui dort de façon répétée indéfiniment retard peut en retard; en utilisant le temps absolu, il compense les retards en dormant pour des intervalles plus courts.
Dans votre cas, il vous suffit d'attendre une journée avant que le programme ne recommence à imprimer. : D
Vous pouvez aussi régler un temps juste un peu dans le passé (disons 15 sec), et voir le programme reprendre après 15 + 2 sec.
PS. Pour clarifier ce qui se passe avec un exemple:
Au 25/08/2016 16:27:12 le programme appelle time.Sleep(2 * time.Second)
Les horaires d'exécution Go le goroutine être réveillé sur 25/08/2016 à 16:27:14 et met le goroutine dormir
quant à lui ...
l'utilisateur définit le temps de système 2016-08- 16:27:13
maintenant le délai d'attente est prévue pour expirer une jours et une seconde plus tard.
Cela ne devrait pas se produire sur les systèmes sur lesquels Go utilise POSIX CLOCK_MONOTONIC ou un équivalent.
Je n'ai pas un tel comportement sur Windows machine. Peut-être que c'est un bug sur les machines Unix, cause par exemple de l'utilisation de la notion de temps dans le temps. Fonction Sommeil – RoninDev