Go中协程死锁

错误代码

package main

func main() {
    ch := make(chan int)
    ch <- 5
}

抛出错误
fatal error: all goroutines are asleep - deadlock!

改造

package main

import (
    "fmt"
    "time"
)

func push(ch chan int) {
    ch <- 5
    time.Sleep(4 * time.Second)
}

func main() {
    ch := make(chan int)
    go push(ch)
    fmt.Printf("data is %d", <-ch)
}

我们通过协程push向信道发送数据,然后在主协程中获取数据。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 1
giao哥

那么这个是为什么死锁呢

2年前 评论
dannisi (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
1
粉丝
0
喜欢
0
收藏
0
排名:2907
访问:205
私信
所有博文
社区赞助商