golang time.Sleep bug?
发布时间:2020-12-16 19:02:59 所属栏目:大数据 来源:网络整理
导读:我在下面制作测试代码(gotest.go) package mainimport ( "fmt" "time" "sync") func main() { var wg sync.WaitGroup wg.Add(1) go testa() wg.Wait()}func testa() { for { fmt.Println("test goroutine") time.Sleep(2 * time.Second) }} 安慰 go run gote
我在下面制作测试代码(gotest.go)
package main import ( "fmt" "time" "sync" ) func main() { var wg sync.WaitGroup wg.Add(1) go testa() wg.Wait() } func testa() { for { fmt.Println("test goroutine") time.Sleep(2 * time.Second) } } 安慰 go run gotest.go 并且,更改我的计算机的日期 然后, 是bug吗? (它正在努力设定第二天) 我使用MacOs最新版本.
内部睡眠是在绝对时间内完成的:如果你在时间T调用睡眠(n),程序被安排在n次之后不被唤醒,而是在时间T n.
这通常是优选的,因为: >时间通常不会倒退 在您的情况下,您只需等待一天程序再次开始打印. :d 或者在过去设置一点时间(例如15秒),并看到程序在15秒后恢复. PS.澄清一个例子会发生什么: 在2016-08-25 16:27:12程序调用time.Sleep(2 * time.Second) 同时…… 用户将系统时间设置为2016-08-24 16:27:13 现在超时计划在一天后过期一秒钟. 这不应该发生在Go使用POSIX CLOCK_MONOTONIC或其等价物的系统上. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |