我有这段代码应该在程序退出前等待 10 秒,但它只有在我之后为它添加某种打印内容时才有效。这是为什么?我希望它等待 10 秒,而不必取消对该打印语句的注释。
func main() {
forever := make(chan bool)
go func() {
fmt.Println("why")
time.Sleep(10*time.Second)
//fmt.Println("here")
forever <- false
}()
fmt.Println("forever")
<- forever
}
这也有效:
func main() {
forever := make(chan bool)
go func() {
fmt.Println("why")
time.Sleep(10*time.Second)
forever <- false
}()
fmt.Println(<- forever)
}
以下程序在 Go playground 中运行时不会等待 10 秒:
package main
import (
"time"
)
func main() {
forever := make(chan bool)
go func() {
time.Sleep(10 * time.Second)
forever <- false
}()
<-forever
}
桃花长相依
同步异步和阻塞非阻塞的区别
同步异步与阻塞非阻塞异同?
异步与阻塞
既然netty是基于nio的网路通信框架,为社么不是同步非阻塞,而是异步非阻塞呢?
相关分类