package mainimport ( "fmt" "time" "pre.google.com/p/go.net/context")func errName(ctx context.Context, cancel context.CancelFunc) { for i := 0; i < 10000; i++ { select { case <-ctx.Done(): return default: } } cancel()}func errEmail(ctx context.Context, cancel context.CancelFunc) { for i := 0; i < 100; i++ { select { case <-ctx.Done(): return default: } } cancel()}func main() { ctx := context.Background() ctx, cancel := context.WithCancel(ctx) go errName(ctx, cancel) go errEmail(ctx, cancel) <-ctx.Done() if ctx.Err() != nil { fmt.Println(ctx.Err()) } time.Sleep(1000000)}
您可以阅读有关此问题的两篇好文章:
- http://blog.golang.org/context
- http://blog.golang.org/pipelines
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)