第14章 使用 select 切换协程

1、切换

package main

import "fmt"
import "time"

func genData1(ch chan int) {
    for i :=2; ; i++ {
        ch <- i * 2
    }
}

func genData2(ch chan int) {
    for i :=2; ; i++ {
        ch <- i / 2
    }
}

func getData(ch1 chan int, ch2 chan int) {
    for {
        select {
            case v := <-ch1:
                fmt.Printf("Received on channel 1: %d\n", v)
            case v := <-ch2:
                fmt.Printf("Received on channel 2: %d\n", v)
        }
    }
}

func main() {
    ch1 := make(chan int)
    ch2 := make(chan int)

    go genData1(ch1)
    go genData2(ch2)
    go getData(ch1, ch2)
    time.Sleep(1e9)
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容