Codebase list golang-github-vbauerster-mpb / 538fd5f
pass &wg to decoratorAverageAdjust Vladimir Bauer 1 year, 10 months ago
1 changed file(s) with 12 addition(s) and 6 deletion(s). Raw diff Collapse all Expand all
314314 // if you need to adjust start time of all average based decorators
315315 // or after progress resume.
316316 func (b *Bar) DecoratorAverageAdjust(start time.Time) {
317 select {
318 case b.operateState <- func(s *bState) { s.decoratorAverageAdjust(start) }:
317 result := make(chan *sync.WaitGroup)
318 select {
319 case b.operateState <- func(s *bState) {
320 var wg sync.WaitGroup
321 s.decoratorAverageAdjust(start, &wg)
322 result <- &wg
323 }:
324 wg := <-result
325 wg.Wait()
319326 case <-b.ctx.Done():
320327 }
321328 }
564571 wg.Wait()
565572 }
566573
567 func (s bState) decoratorAverageAdjust(start time.Time) {
568 var wg sync.WaitGroup
574 func (s bState) decoratorAverageAdjust(start time.Time, wg *sync.WaitGroup) {
569575 for i := 0; i < len(s.averageDecorators); i++ {
576 wg.Add(1)
570577 switch d := s.averageDecorators[i]; i {
571578 case len(s.averageDecorators) - 1:
572579 d.AverageAdjust(start)
580 wg.Done()
573581 default:
574 wg.Add(1)
575582 go func() {
576583 d.AverageAdjust(start)
577584 wg.Done()
578585 }()
579586 }
580587 }
581 wg.Wait()
582588 }
583589
584590 func (s bState) decoratorShutdownNotify(wg *sync.WaitGroup) {