我有一个可以在单独的 goroutine 中顺序或同时调用的函数。
我想确保函数在主 goroutine 完成之前完全执行,所以我将 *sync.WaitGroup 参数传递给函数。现在,在某些地方要顺序调用该函数。
我可以像这样将 nil waitGroup 传递给函数:
func my_func(wg *sync.WaitGroup){
if wg != nil{
defer wg.Done()
}
// do the task
}
func main(){
my_func(nil) // sequential call
wg := sync.WaitGroup{}
wg.Add(1)
go my_func(&wg) // concurrent call
wg.Wait()
}
有没有更好的方法来实现这一目标?
慕的地6264312
相关分类