我的代码
package main
import (
"fmt"
"sync"
)
func other(c chan int, wg *sync.WaitGroup) {
c <- 455
wg.Done()
}
func addInt(c chan int, d int, wg *sync.WaitGroup) {
c <- d
wg.Done()
}
func main() {
var wg sync.WaitGroup
myChanel := make(chan int)
wg.Add(2)
go addInt(myChanel, 5, &wg)
go other(myChanel, &wg)
wg.Wait()
c := 0
for v := range myChanel {
if c == 1 {
close(myChanel)
}
fmt.Println(v)
c++
}
}
我正在学习 golang 看地雷,但我确实遇到了这样的错误。我查看了其他来源。我无法找到健康的解决方案。我再次尝试关闭(香奈儿)。
错误输出
fatal error: all goroutines are asleep - deadlock!
goroutine 1 [semacquire]:
sync.runtime_Semacquire(0xc0000140f8)
/usr/lib/go-1.13/src/runtime/sema.go:56 +0x42
sync.(*WaitGroup).Wait(0xc0000140f0)
/usr/lib/go-1.13/src/sync/waitgroup.go:130 +0x64
main.main()
/home/zeus/go/src/github.com/awesomeProject/pool.go:27 +0xe4
goroutine 6 [chan send]:
main.addInt(0xc000016120, 0x5, 0xc0000140f0)
/home/zeus/go/src/github.com/awesomeProject/pool.go:14 +0x3f
created by main.main
/home/zeus/go/src/github.com/awesomeProject/pool.go:24 +0xaa
goroutine 7 [chan send]:
main.other(0xc000016120, 0xc0000140f0)
/home/zeus/go/src/github.com/awesomeProject/pool.go:9 +0x37
created by main.main
/home/zeus/go/src/github.com/awesomeProject/pool.go:25 +0xd6
exit status 2
慕慕森
12345678_0001
相关分类