normandy/foo.go
2015-12-15 13:50:57 +01:00

28 lines
900 B
Go

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