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