golangエラー:all goroutines are asleep-deadlock!
go channelのテスト中に次のエラーメッセージが表示されました:
実行プロンプトエラー:
上のコードにgoroutineとsleepを追加すると、gorutineが終了してからエラーが印刷されるのを待っています.
印刷結果:
fatal error: all goroutines are asleep - deadlock!
エラーメッセージの意味はmain goroutine線の中で、他のgoroutine線からデータを入れることを期待していますが、他のgoroutine線はすでに実行済み(all goroutines are asleep)で、パイプにデータを入れることは永遠にありません.だから、main goroutine線は永遠に来ないデータを待っていて、プログラム全体が永遠に待っています.この時は上記の間違いを報告します.検証:package main
import (
"fmt"
)
func main() {
ch1 := make (chan int)
for {
select {
case "ch1 pop one")
}
}
}
}
実行プロンプトエラー:
fatal error: all goroutines are asleep - deadlock!
上のコードにgoroutineとsleepを追加すると、gorutineが終了してからエラーが印刷されるのを待っています.
package main
import (
"fmt"
"time"
)
func main() {
ch1 := make (chan int)
go func() {
fmt.Println("sleep 1")
time.Sleep(5 * time.Second)
fmt.Println("sleep 2")
}()
for {
select {
case "ch1 pop one")
}
}
}
}
印刷結果:
sleep 1
sleep 2
fatal error: all goroutines are asleep - deadlock!