为了账号安全,请及时绑定邮箱和手机立即绑定

Go 中的死锁,两个例程分工

Go 中的死锁,两个例程分工

Go
慕田峪4524236 2021-06-04 18:51:56
我在 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
提交
取消
意见反馈 帮助中心 APP下载
官方微信