github.com/zly-app/zapp@v1.3.3/component/gpool/nopool.go (about) 1 package gpool 2 3 import ( 4 "sync" 5 6 "github.com/zly-app/zapp/core" 7 "github.com/zly-app/zapp/pkg/utils" 8 ) 9 10 type NoPool struct { 11 wg sync.WaitGroup 12 } 13 14 func (n *NoPool) Go(fn func() error, callback func(err error)) { 15 n.wg.Add(1) 16 defer n.wg.Done() 17 err := fn() 18 if callback != nil { 19 callback(err) 20 } 21 } 22 23 func (n *NoPool) GoSync(fn func() error) (result error) { 24 n.wg.Add(1) 25 defer n.wg.Done() 26 return fn() 27 } 28 29 func (n *NoPool) TryGo(fn func() error, callback func(err error)) (ok bool) { 30 n.wg.Add(1) 31 defer n.wg.Done() 32 err := fn() 33 if callback != nil { 34 callback(err) 35 } 36 return true 37 } 38 39 func (n *NoPool) TryGoSync(fn func() error) (result error, ok bool) { 40 n.wg.Add(1) 41 defer n.wg.Done() 42 return fn(), true 43 } 44 45 func (n *NoPool) GoAndWait(fn ...func() error) error { 46 return utils.Go.GoAndWait(fn...) 47 } 48 49 func (n *NoPool) Wait() { 50 n.wg.Wait() 51 } 52 53 func (n *NoPool) Close() {} 54 55 func NewNoPool() core.IGPool { 56 return &NoPool{} 57 }