【发布时间】:2020-08-17 17:04:32
【问题描述】:
package main
import (
"fmt"
"time"
)
func main() {
ch := make(chan int)
go func() {
fmt.Printf("func at %d\n", time.Now().UnixNano())
select {
case ch <- 1:
fmt.Println("running send")
default:
fmt.Println("running default")
}
}()
time.Sleep(100 * time.Millisecond)
fmt.Printf("main at %d\n", time.Now().UnixNano())
fmt.Println(<-ch)
}
研究了一天还是无法解释为什么case ch <- 1:没有准备好,选择默认情况下运行。当然会导致死锁!
【问题讨论】:
-
如果您正在等待可能稍后出现的值,为什么您有
default案例?
标签: go deadlock channel goroutine