【发布时间】:2022-08-16 13:36:58
【问题描述】:
func writeToChan(wg *sync.WaitGroup, ch chan int, stop int) {
defer wg.Done()
for i := 0; i < stop; i++ {
ch <- i
}
}
func readToChan(wg *sync.WaitGroup, ch chan int) {
defer wg.Done()
for n := range ch {
fmt.Println(n)
}
}
func main() {
ch := make(chan int, 3)
wg := new(sync.WaitGroup)
wg.Add(2)
go writeToChan(wg, ch, 5)
go readToChan(wg, ch)
wg.Wait()
}
0
1
2
3
4
fatal error: all goroutines are asleep - deadlock!
我假设readToChan 总是连续读取,writeToChan 写入通道并在读取通道时等待。
我不知道为什么我在 WaitGroup 中添加了两个“wait”时输出显示死锁。
标签: go