async_init.go 477 B

12345678910111213141516171819202122232425
  1. package initutils
  2. import (
  3. "sync"
  4. )
  5. var asyncInitWaitGroup sync.WaitGroup
  6. func AsyncInitAdd() { asyncInitWaitGroup.Add(1) }
  7. func AsyncInitDone() { asyncInitWaitGroup.Done() }
  8. func AsyncInitWait() { asyncInitWaitGroup.Wait() }
  9. // defer initutils.AsyncInitAddDone()()
  10. func AsyncInitAddDone() func() {
  11. asyncInitWaitGroup.Add(1)
  12. return func() {
  13. asyncInitWaitGroup.Done()
  14. }
  15. }
  16. func AsyncInit(f func()) {
  17. asyncInitWaitGroup.Add(1)
  18. defer asyncInitWaitGroup.Done()
  19. f()
  20. }