From: Dmitriy Vyukov Date: Thu, 1 Mar 2012 18:16:20 +0000 (+0400) Subject: sync: add Once example X-Git-Tag: weekly.2012-03-04~53 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=2295554db6503cc47eb0cfb69c59cc5b740f5f0e;p=gostls13.git sync: add Once example R=golang-dev, rsc, bradfitz CC=golang-dev https://golang.org/cl/5715046 --- diff --git a/src/pkg/sync/example_test.go b/src/pkg/sync/example_test.go index 1424b1e79e..1564924003 100644 --- a/src/pkg/sync/example_test.go +++ b/src/pkg/sync/example_test.go @@ -5,6 +5,7 @@ package sync_test import ( + "fmt" "net/http" "sync" ) @@ -32,3 +33,22 @@ func ExampleWaitGroup() { // Wait for all HTTP fetches to complete. wg.Wait() } + +func ExampleOnce() { + var once sync.Once + onceBody := func() { + fmt.Printf("Only once\n") + } + done := make(chan bool) + for i := 0; i < 10; i++ { + go func() { + once.Do(onceBody) + done <- true + }() + } + for i := 0; i < 10; i++ { + <-done + } + // Output: + // Only once +}