b.flushed in parallel
Vladimir Bauer
9 years ago
| 101 | 101 | func (p *progress) server() { |
| 102 | 102 | t := time.NewTicker(refreshRate * time.Millisecond) |
| 103 | 103 | bars := make([]*Bar, 0, 4) |
| 104 | lw := uilive.New() | |
| 105 | lw.Out = p.out | |
| 104 | lw := uilive.New(p.out) | |
| 106 | 105 | for { |
| 107 | 106 | select { |
| 108 | 107 | case op, ok := <-p.op: |
| 131 | 130 | } |
| 132 | 131 | case <-t.C: |
| 133 | 132 | for _, b := range bars { |
| 134 | fmt.Fprintln(lw, b.String()) | |
| 133 | // cannot parallel this, because order matters | |
| 134 | fmt.Fprintln(lw, b) | |
| 135 | 135 | } |
| 136 | 136 | lw.Flush() |
| 137 | 137 | for _, b := range bars { |
| 138 | b.flushed() | |
| 138 | go func(b *Bar) { | |
| 139 | b.flushed() | |
| 140 | }(b) | |
| 139 | 141 | } |
| 140 | 142 | case d := <-p.interval: |
| 141 | 143 | t.Stop() |