为什么这是示例 1 中的死锁,并且在示例 2 中没有死锁或打印任何内容?
示例 1。)
func main() {
w := sync.WaitGroup{}
w.Add(4)
c := make(chan int)
go func() { c <- 1; w.Done() }()
go func() { c <- 2; w.Done() }()
go func() { c <- 3; w.Done() }()
go func() { println(len(c)); w.Done() }()
w.Wait()
}
示例 2。)
func main() {
w := sync.WaitGroup{}
w.Add(3)
c := make(chan int)
go func() { c <- 1; w.Done() }()
go func() { c <- 2; w.Done() }()
go func() { c <- 3; w.Done() }()
go func() { w.Wait(); println(len(c)) }()
}
梵蒂冈之花
慕妹3146593
相关分类