package initutils import ( "sync" ) var asyncInitWaitGroup sync.WaitGroup func AsyncInitAdd() { asyncInitWaitGroup.Add(1) } func AsyncInitDone() { asyncInitWaitGroup.Done() } func AsyncInitWait() { asyncInitWaitGroup.Wait() } // defer initutils.AsyncInitAddDone()() func AsyncInitAddDone() func() { asyncInitWaitGroup.Add(1) return func() { asyncInitWaitGroup.Done() } } func AsyncInit(f func()) { asyncInitWaitGroup.Add(1) defer asyncInitWaitGroup.Done() f() }