等待 goroutine 的常见方法是使用*sync.WaitGroup:
func main() {
wg := &sync.WaitGroup{}
wg.Add(1)
go func() {
defer wg.Done()
// Long running task
}()
wg.Wait()
}
这里没有问题。然而,这个呢:
func main() {
wg := &sync.WaitGroup{}
wg.Add(1)
go func() {
defer wg.Done()
// Long running task
panic("Something unexpected happened.")
}()
wg.Wait()
}
在这种情况下,当wg.Done()被调用时,我相信main()可以在没有panic()写入stdout/的细节的情况下退出stderr。这是真的吗?如果是,我该如何防止它发生?
LEATH
MMTTMM
吃鸡游戏
相关分类