为了账号安全,请及时绑定邮箱和手机立即绑定

单通道和选择语句死锁

单通道和选择语句死锁

Go
开心每一天1111 2021-05-09 20:16:42
我有以下最小示例,该示例由于死锁而在第一个命令行输入之后无法正常工作: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)             }                                                 }             }  我本来希望这只是接受用户输入并一遍又一遍地回显它。另外,我确实注意到,如果添加第二个通道和第二个go例程,则不会出现任何死锁问题。那么为什么会出现这种僵局呢?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号