fatal error all goroutines are asleep - deadlock!
生活随笔
收集整理的這篇文章主要介紹了
fatal error all goroutines are asleep - deadlock!
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
先看下面代碼
package mainimport ("fmt""time"
)func main() {ch1 := make(chan int)go func() {fmt.Println(<-ch1)}()ch1 <- 1time.Sleep(time.Second)
}
一般來講,可以正常運行,因為 go func() 的調(diào)度執(zhí)行需要一點時間,而此時主 goruntine 繼續(xù)往下執(zhí)行,等到主 goruntine 執(zhí)行發(fā)送通道操作 ch1 <- 1 后,又有一個等待時間,go func() 可以正常接收值。
但是下面這個例子:
package mainimport ("fmt""time"
)func main() {ch1 := make(chan int)ch1 <- 1go func() {fmt.Println(<-ch1)}()time.Sleep(time.Second)
}
在主 goruntine 中執(zhí)行 ch1 <- 1 操作,就等于把主 goroutine 阻塞了。后面自定義的 go 語句根本還沒來得及執(zhí)行。所以會報錯。
fatal error: all goroutines are asleep - deadlock!
總結(jié)
以上是生活随笔為你收集整理的fatal error all goroutines are asleep - deadlock!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022-2028年中国PE膜产业竞争现
- 下一篇: 2022-2028年中国动力锂电池用橡胶