From: Gaal Yahas Date: Wed, 6 Feb 2013 16:39:52 +0000 (+0800) Subject: sync: improve WaitGroup example by putting the call to Done in a X-Git-Tag: go1.1rc2~1123 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=c2fb6e2c0bf7ba6866eb27567b5d16683680e63b;p=gostls13.git sync: improve WaitGroup example by putting the call to Done in a deferred block. This makes hangs in the waiting code less likely if a goroutine exits abnormally. R=golang-dev, minux.ma CC=golang-dev https://golang.org/cl/7306052 --- diff --git a/src/pkg/sync/example_test.go b/src/pkg/sync/example_test.go index 1564924003..031c87f03b 100644 --- a/src/pkg/sync/example_test.go +++ b/src/pkg/sync/example_test.go @@ -24,10 +24,10 @@ func ExampleWaitGroup() { wg.Add(1) // Launch a goroutine to fetch the URL. go func(url string) { + // Decrement the counter when the goroutine completes. + defer wg.Done() // Fetch the URL. http.Get(url) - // Decrement the counter. - wg.Done() }(url) } // Wait for all HTTP fetches to complete. @@ -37,7 +37,7 @@ func ExampleWaitGroup() { func ExampleOnce() { var once sync.Once onceBody := func() { - fmt.Printf("Only once\n") + fmt.Println("Only once") } done := make(chan bool) for i := 0; i < 10; i++ {