请高手来回答通道的问题?

mike51 · 2017-03-17 04:43:45 · 2339 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2017-03-17 04:43:45 的主题,其中的信息可能已经有所发展或是发生改变。

为什么会出现死锁的问题? fatal error: all goroutines are asleep - deadlock!


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2339 次点击  
加入收藏 微博
5 回复  |  直到 2017-03-17 07:33:06
leisure520
leisure520 · #1 · 8年之前
for i := 0; i < 10; i++ {
    chs[i] = make(chan int)
    go test(chs[i])
}

加上一句代码

xiaochuan
xiaochuan · #2 · 8年之前

你要搞清楚。第一次运行 通道都给关闭了。肯定死了。

xiaochuan
xiaochuan · #3 · 8年之前

看错了。通道数组、

xiaochuan
xiaochuan · #4 · 8年之前

似乎不是这么玩的。我还真没见过谁玩 通道数组

xiaochuan
xiaochuan · #5 · 8年之前

package main

import ( "fmt"

"math/rand"

)

func test(ch chan int) {

ch <- rand.Int() //向channel中写入一个64位的随机数

close(ch)

}

func main() { chs := make([]chan int, 10) //直接创建10个的int类型通道的切片

for i := 0; i < 10; i++ {
    chs[i] = make(chan int)
    go test(chs[i])
}

for _, ch := range chs {

    value := <-ch //阻塞等待退出信号
    fmt.Println(value)

}

}

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传