chan

package main

import (
    "fmt"
    "sync"
    "time"
)

var wg = sync.WaitGroup{}

func dispatch(c chan int, i int) {
    c <- i
}

func receive(c chan int) {
L:
    for {
        select {
        case data := <-c:
            fmt.Println(data)
            wg.Done()
        case <-time.After(time.Second * 5):
            fmt.Println("done")
            break L
        }
    }
}

func main() {
    chan1 := make(chan int, 0)
    for i := 0; i < 100; i++ {
        wg.Add(1)
        go dispatch(chan1, i)
    }
    receive(chan1)
    wg.Wait()
}

可以参考:

注意 退出for select 需在receiver的function里面打个tag

results matching ""

    No results matching ""