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  }