优雅的结束一个goroutine

package main

import "sync"
func main() {
    var wg sync.WaitGroup
    wg.Add(1)

    ch := make(chan int)
    go func() {
        for {
            foo, ok := <- ch
            if !ok {
                println("done")
                wg.Done()
                return
            }
            println(foo)
        }
    }()
    ch <- 1
    ch <- 2
    ch <- 3
    close(ch)

    wg.Wait()
}

  转载自:http://stackoverflow.com/questions/6807590/how-to-stop-a-goroutine

posted @ 2016-06-02 11:40  呆头鱼  阅读(143)  评论(0)    收藏  举报