This commit is contained in:
Loic Nageleisen 2015-12-15 13:50:57 +01:00
parent 06273c3525
commit aa3bb21334
2 changed files with 35 additions and 0 deletions

28
foo.go Normal file
View file

@ -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()
}

7
foo2.go Normal file
View file

@ -0,0 +1,7 @@
package main
func main() {
c := make(chan string, 1)
c<-"foo"
<-c
}