GZJ
5/17/2017 - 11:57 AM

go-multitask.go

package main

import(
	"fmt"
	"sync"
	"time"
	//"runtime"
)

func main() {
	var wg sync.WaitGroup
	c := make(chan int)	
	for i := 0; i < 4; i++ 
		wg.Add(1)
		go func() {
			for{
				select{
					case x := <- c:
						fmt.Println(x)
					case <- time.After(time.Second*10):
						fmt.Println("timeout")
						goto END
				}
			}
			END:
			wg.Done()
		}()	
	}

	for j := 0; j < 10000; j++ {
		c <- j	
	}
	wg.Wait()
}