Go中协程死锁
错误代码
package main
func main() {
ch := make(chan int)
ch <- 5
}
抛出错误
fatal error: all goroutines are asleep - deadlock!
改造
package main
import (
"fmt"
"time"
)
func push(ch chan int) {
ch <- 5
time.Sleep(4 * time.Second)
}
func main() {
ch := make(chan int)
go push(ch)
fmt.Printf("data is %d", <-ch)
}
我们通过协程push向信道发送数据,然后在主协程中获取数据。
本作品采用《CC 协议》,转载必须注明作者和本文链接
那么这个是为什么死锁呢