goroutines 完成通道无缓冲通道

问题描述 投票:0回答:1

在无缓冲通道中,默认发送和接收阻塞,直到发送者和接收者都准备好。

package main
    
    import (
        "fmt"
        "time"
    )
    
    func worker(done chan bool) {
        fmt.Print("working...")
        fmt.Println("done")
    
        done <- true
    }
    
    func main() {
    
        done := make(chan bool)
        go worker(done)
    
        time.Sleep(5 * time.Second)
        <-done
    }

但是上面的代码是立即执行的。应该要等5秒吧?

channel goroutine
1个回答
0
投票

如果您在操场上运行上述内容,那么我猜您遇到了与此问题相同的情况如果没有进一步的语句要执行,为什么 time.Sleep 不起作用?

© www.soinside.com 2019 - 2024. All rights reserved.