package main
import (
"fmt"
"time"
)
func main() {
c := make(chan struct{})
count := 1
go func() {
for {
fmt.Println("foo", count)
count++
time.Sleep(2)
}
c <- struct{}{}
}()
fmt.Println("Hello World!")
<-c
}
这是我的代码,我发现每次循环都没有睡2,而且很快打印出来。它的原因是什么?我搜索的是睡眠会让goroutine放弃对cpu的控制,当它再次获得控制权时它会检查自己是在睡觉吗?
答案 0 :(得分:8)
time.Sleep以纳秒为单位Duration,所以要延迟2秒;
time.Sleep(2000000000)
或者,正如@ Ainar-G在评论中指出的那样,可读性更高;
time.Sleep(2 * time.Second)