|
|
@@ -0,0 +1,25 @@
|
|
|
+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()
|
|
|
+}
|