繁体   English   中英

为什么睡眠在goroutine中不起作用

[英]why does it seem that sleep doesn't work in goroutine

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的控制,当再次获得控制时,它将检查自身是否正在睡眠?

time.Sleep持续时间以纳秒为单位,因此应延迟2秒;

time.Sleep(2000000000)    

或者,正如@ Ainar-G在评论中指出的那样,可读性更好;

time.Sleep(2 * time.Second)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM