我有以下最小示例,該示例由于死鎖而在第一個(gè)命令行輸入之后無法正常工作:package main import "fmt" import "os" func main() { channel1 := make(chan string) go func() { var str string for { fmt.Fscanln(os.Stdin, &str) channel1 <- str } }() for { select { case str := <-channel1: fmt.Printf("Channel1 said: %v\n", str) } } } 我本來希望這只是接受用戶輸入并一遍又一遍地回顯它。另外,我確實(shí)注意到,如果添加第二個(gè)通道和第二個(gè)go例程,則不會(huì)出現(xiàn)任何死鎖問題。那么為什么會(huì)出現(xiàn)這種僵局呢?
- 1 回答
- 0 關(guān)注
- 153 瀏覽
添加回答
舉報(bào)
0/150
提交
取消