()
| 15 | } |
| 16 | |
| 17 | func NewTaskGroup() *TaskGroup { |
| 18 | var concurrent = runtime.NumCPU() |
| 19 | if concurrent <= 1 { |
| 20 | concurrent = 2 |
| 21 | } |
| 22 | return &TaskGroup{ |
| 23 | semi: make(chan zero.Zero, concurrent), |
| 24 | wg: &sync.WaitGroup{}, |
| 25 | locker: &sync.RWMutex{}, |
| 26 | } |
| 27 | } |
| 28 | |
| 29 | func (this *TaskGroup) Run(f func()) { |
| 30 | this.wg.Add(1) |
no outgoing calls