(children []os.FileInfo, fn func([]os.FileInfo))
| 394 | } |
| 395 | |
| 396 | func (w *fastWalker) walk(children []os.FileInfo, fn func([]os.FileInfo)) { |
| 397 | cur := atomic.AddInt32(w.cur, 1) |
| 398 | if cur > w.limit { |
| 399 | fn(children) |
| 400 | atomic.AddInt32(w.cur, -1) |
| 401 | return |
| 402 | } |
| 403 | |
| 404 | w.wg.Add(1) |
| 405 | go func() { |
| 406 | fn(children) |
| 407 | w.wg.Done() |
| 408 | atomic.AddInt32(w.cur, -1) |
| 409 | }() |
| 410 | } |
| 411 | |
| 412 | func (w *fastWalker) Wait() { |
| 413 | w.wg.Wait() |