我在 go 中遇到了一个死锁问题。该程序采用一个整数数组 a,并将其一分为二。然后它将这两个部分放在两个不同的例程中并总结所有元素。在此之后,它应该在通道 res 中发送两个结果。然后应该将两个 res(现在是 ch)相加并打印。我的问题:我试图通过大量移动关闭函数来解决死锁问题,但似乎没有任何帮助。它仅在一个例程 Add 运行时运行良好。package mainimport ( "fmt")// Add adds the numbers in a and sends the result on res.func Add(a []int, res chan<- int) { sum := 0 for i := range a { sum = sum + a[i] } res <- sum}func main() { a := []int{1, 2, 3, 4, 5, 6, 7} n := len(a) ch := make(chan int) go Add(a[:n/2], ch) go Add(a[n/2:], ch) sum := 0 for s := range ch { sum = sum + s } //close(ch) fmt.Println(sum)}
1 回答
- 1 回答
- 0 关注
- 170 浏览
添加回答
举报
0/150
提交
取消