1. 首页
  2. 主题
  3. Go问与答

关于select多路复用的问题

MrDoubleU · · 1597 次点击
``` golang?linenums package main import "fmt" func main() { ch := make(chan int) for i := 0; i < 10; i++ { select { case x:=<-ch: fmt.Println(x) case ch <- i: fmt.Println(i) } } } ``` - 请问这段代码,为什么运行不了呢?无缓冲的channel遇到select会发生什么?
<a href="/user/mortemnh" title="@mortemnh">@mortemnh</a> 说的是对的,ch 是无缓冲 `channel`,执行到 `ch &lt;- i` 之后,如果没有接收方取值就会一直阻塞在这里,无法进入下次 `for` 循环。
#5
更多评论
for循环只跑一下就被阻塞了,还能发生什么,case ch&lt;-i
#1
没有向通道写入数据
#2

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中