没睡的 gopher 卷王请进
<pre><code class="language-go">func TestClose(t *testing.T) {
rand.Seed(time.Now().UnixNano())
wg := sync.WaitGroup{}
wg.Add(1)
go func() {
defer wg.Done()
stop := make(chan struct{})
// goroutine 1
go func() {
for range stop {
return
}
}()
// goroutine 2
go func() {
defer close(stop)
for {
if rand.Intn(10) < 3 {
return
}
}
}()
<-stop
}()
wg.Wait()
}
</code></pre>
<p>什么情况下 goroutine2 退出了但是 1 没退出</p>
收藏(0)
分享
相关标签:
注意:本文归作者所有,未经作者允许,不得转载
-
2022年4月19日 19:14
大佬,要怎么改才能让 2 退出 1 也退出呢
0
0
-
2022年4月19日 19:44
0
0
-
2022年4月19日 20:44
好的,感谢大佬
0
0