Swapping the goroutines lets them reuse the
communication completion on v instead of
needing a second channel (done).
R=gri
CC=golang-dev
https://golang.org/cl/
4287045
func walkDir(path string) {
- // start an error handler
- done := make(chan bool)
v := make(fileVisitor)
go func() {
- for err := range v {
- if err != nil {
- report(err)
- }
- }
- done <- true
+ filepath.Walk(path, v, v)
+ close(v)
}()
- // walk the tree
- filepath.Walk(path, v, v)
- close(v) // terminate error handler loop
- <-done // wait for all errors to be reported
+ for err := range v {
+ if err != nil {
+ report(err)
+ }
+ }
}