From aa3bb2133407e85718aa02c8cd62b78c46ca76dd Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Tue, 15 Dec 2015 13:50:57 +0100 Subject: [PATCH] foo --- foo.go | 28 ++++++++++++++++++++++++++++ foo2.go | 7 +++++++ 2 files changed, 35 insertions(+) create mode 100644 foo.go create mode 100644 foo2.go diff --git a/foo.go b/foo.go new file mode 100644 index 0000000..e93761e --- /dev/null +++ b/foo.go @@ -0,0 +1,28 @@ +package main + +import ( + "fmt" + "sync" +) + +func main() { + c := make(chan string, 5) + w := sync.WaitGroup{} + w.Add(1); go func() { v, ok := <-c; fmt.Printf("done %s %t\n", v, ok); w.Done() }() + w.Add(1); go func() { v, ok := <-c; fmt.Printf("done %s %t\n", v, ok); w.Done() }() + w.Add(1); go func() { v, ok := <-c; fmt.Printf("done %s %t\n", v, ok); w.Done() }() + c<-"foo" + //c<-"foo" + //c<-"foo" + //c<-"foo" + //c<-"foo" + //c<-"foo" + close(c) + fmt.Println("closed") + w.Add(1); go func() { v, ok := <-c; fmt.Printf("done %s %t\n", v, ok); w.Done() }() + w.Add(1); go func() { v, ok := <-c; fmt.Printf("done %s %t\n", v, ok); w.Done() }() + w.Add(1); go func() { v, ok := <-c; fmt.Printf("done %s %t\n", v, ok); w.Done() }() + w.Add(1); go func() { v, ok := <-c; fmt.Printf("done %s %t\n", v, ok); w.Done() }() + w.Add(1); go func() { v, ok := <-c; fmt.Printf("done %s %t\n", v, ok); w.Done() }() + w.Wait() +} diff --git a/foo2.go b/foo2.go new file mode 100644 index 0000000..6fef5b8 --- /dev/null +++ b/foo2.go @@ -0,0 +1,7 @@ +package main + +func main() { + c := make(chan string, 1) + c<-"foo" + <-c +}