sync.wait
来源:11-1 实现最简TCP服务器

weixin_慕沐2155417
2022-09-13
wait.go里实现了对等待组的包装,其中有一个超时等待的函数
func (w *Wait) WaitWithTimeout(timeout time.Duration) bool {
c := make(chan bool, 1)
go func() {
defer close(c)
w.wg.Wait()
c <- true
}()
select {
case <-c:
return false // completed normally
case <-time.After(timeout):
return true // timed out
}
}
我的疑问点在于这个channel为什么要设置成带一个缓存的,好像非缓存的channel就能实现
写回答
1回答
-
Moody
2022-09-13
看起来确实不需要(我这边没有试,目测好像是不需要的)
022023-06-25