gpt4 book ai didi

go - 如何解决这个程序中的死锁?

转载 作者:IT王子 更新时间:2023-10-29 01:47:04 24 4
gpt4 key购买 nike

我是 golang 的新手,所以我不知道这个死锁问题。我一直在阅读一些文章,但这似乎是该程序的快速修复。

package main

import (
"fmt"
)

//ping
func addValue(input1 int, input2 int, chn2 chan<- int) {
chn2 <- input1 + input2
}

//pong
//function to write 1st user input to channel_1
func getUserInput(input1 int, input2 int, chn2 <-chan int, chn1 chan int, chn3 chan int) {
chn1 <- input1
chn1 <- input2
//receiving info from other func and read into this func.
val := <-chn2
chn3 <- val
}

//Main function
func main() {
var input1 int
var input2 int
chn1 := make(chan int, 3)
chn2 := make(chan int)
chn3 := make(chan int)

//taking inputs from terminal
fmt.Scanln(&input1)
fmt.Scan(&input2)

//calling go functions
go getUserInput(input1, input2, chn1, chn2, chn3)
go addValue(input1, input2, chn2)

//shifting values from channels to var.
/*x:=
y :=
z := <-chn3*/

//print out the values on the terminal
fmt.Println("Reading first input: ", <-chn1)
fmt.Println("Reading second input: ", <-chn1)
fmt.Println("Giving resulted value: ", <-chn3)

}

最佳答案

您的函数参数顺序错误。只需更改函数头就可以了

改变

func getUserInput(input1 int, input2 int, chn2 <-chan int, chn1 chan int, chn3 chan int) {

func getUserInput(input1 int, input2 int, chn1 chan int,chn2 <-chan int,  chn3 chan int) {

播放链接:https://play.golang.com/p/3lKLoEytr9J

关于go - 如何解决这个程序中的死锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49173892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com