Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 向通道片中的通道发送数据时发生死锁_Go_Slice_Channel - Fatal编程技术网

Go 向通道片中的通道发送数据时发生死锁

Go 向通道片中的通道发送数据时发生死锁,go,slice,channel,Go,Slice,Channel,将数据发送到通道片中的整数通道会导致死锁 代码预计将创建5(+1fanInChan)个频道。这些通道用于通过send() 代码:- 主程序包 进口( “fmt” “同步” ) func main(){ 延迟fmt.Println(“即将退出!”) fmt.Println(“已启动”) 通道:=制造([]通道内部,5) 范仁昌:=制造(成龙国际) 发送(频道) 去接收(凡宁川,频道) 对于val:=范围fanInChan{ fmt.Println(“法宁”,瓦尔) } } func发送(频道[]信

将数据发送到通道片中的整数通道会导致死锁

代码预计将创建5(+1
fanInChan
)个频道。这些通道用于通过
send()

代码:-

主程序包
进口(
“fmt”
“同步”
)
func main(){
延迟fmt.Println(“即将退出!”)
fmt.Println(“已启动”)
通道:=制造([]通道内部,5)
范仁昌:=制造(成龙国际)
发送(频道)
去接收(凡宁川,频道)
对于val:=范围fanInChan{
fmt.Println(“法宁”,瓦尔)
}
}
func发送(频道[]信道内部){
延迟fmt.Println(“发送结束”)
fmt.Println(“发送开始”)
对于i:=0;i<100;i++{

channels[i%5]语句
channels:=make([]chan int,5)
正在分配一个具有零通道的数组,该数组


  • 块接收
    receive()
    中,值应该在由goroutines创建的通道中接收。在for loopIn
    receive()
    中,每个goroutine都在一个单独的通道
    通道[0]到通道[4]之间
    它应该将整数值发送到
    fanin
    。这些值将在
    main()
    频道
    fanInChan
    中接收。哎呀,我的错,我读错了代码。对不起。
    Started
    Send Started
    Recive Started
    4
    1
    2
    3
    0
    fatal error: all goroutines are asleep - deadlock!
    ... //You can see rest on playground link above
    
    for i := 0; i < 100; i++ {
            channels[i%5] <- i
        }
    
    
        for i := range channels {
            channels[i] = make(chan int)
        }