golang的第一个deadlock

Posted Avery-Lyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang的第一个deadlock相关的知识,希望对你有一定的参考价值。

package main

import (
    "fmt"
    "math/rand"
)

func push(c chan []int) {
    var slice []int
    for num, i := rand.Intn(5)+1, 0; i <= num; i++ {
        slice = append(slice, rand.Intn(100))
    }
    c <- slice
}

func main() {
    c := make(chan []int)
    go push(c)
//    go push(c)
    x, y := <-c, <-c
    fmt.Println("x:", x, "y:", y)
}

deadlock原因:
chanel缓冲里的资源只有一个,x和y竞争导致环路

以上是关于golang的第一个deadlock的主要内容,如果未能解决你的问题,请参考以下文章

Golang的第一个程序-Hello, World !

仅按 golang 中的第一个元素拆分字符串

golang 387字符串中的第一个唯一字符

golang 我的第一个go程序打印一系列整数。

golang make()的第三个参数

Golang使用小写字母作为Struct属性中的第一个字母