Codebase list golang-github-vbauerster-mpb / 13dacd3
progressAsWriter example WithWaitGroup(&qwg) Vladimir Bauer 1 year, 10 months ago
1 changed file(s) with 20 addition(s) and 21 deletion(s). Raw diff Collapse all Expand all
1212
1313 func main() {
1414 total, numBars := 100, 2
15 var bwg sync.WaitGroup
15 var bwg, qwg sync.WaitGroup
1616 bwg.Add(numBars)
17 qwg.Add(1)
1718 done := make(chan interface{})
18 p := mpb.New(mpb.WithWidth(64), mpb.WithShutdownNotifier(done))
19 p := mpb.New(mpb.WithWidth(64), mpb.WithShutdownNotifier(done), mpb.WithWaitGroup(&qwg))
1920
2021 log.SetOutput(p)
22
23 go func() {
24 defer qwg.Done()
25 for {
26 select {
27 case <-done:
28 // after done, underlying io.Writer returns mpb.DoneError
29 // so following isn't printed
30 log.Println("all done")
31 return
32 default:
33 log.Println("waiting for done")
34 time.Sleep(150 * time.Millisecond)
35 }
36 }
37 }()
38
2139 nopBar := p.MustAdd(0, nil)
2240
2341 for i := 0; i < numBars; i++ {
5068 }()
5169 }
5270
53 var qwg sync.WaitGroup
54 qwg.Add(1)
55 go func() {
56 defer qwg.Done()
57 for {
58 select {
59 case <-done:
60 // after done, underlying io.Writer returns mpb.DoneError
61 // so following isn't printed
62 log.Println("all done")
63 return
64 default:
65 log.Println("waiting for done")
66 time.Sleep(150 * time.Millisecond)
67 }
68 }
69 }()
70
7171 bwg.Wait()
7272 log.Println("completing nop bar")
7373 nopBar.EnableTriggerComplete()
7474
7575 p.Wait()
76 qwg.Wait()
7776 }