1.select的用法。
func g1(ch1 chan struct{}) { time.Sleep(3 * time.Second) ch1 <- struct{}{} } func g2(ch2 chan struct{}) { time.Sleep(4 * time.Second) ch2 <- struct{}{} } func main() { g1Channel := make(chan struct{}) g2Channel := make(chan struct{}) go g1(g1Channel) go g2(g2Channel) // 我要监控多个channel任何一个有值都知道 //1. 某一个分支就绪了就执行该分支 //2. 如果两个都就绪了 先执行哪个 随机的 目的是防止饥饿 防止一直只能拿到一个固定的锁 tm := time.NewTimer(time.Second * 5) select { case <-g1Channel: fmt.Println("g1 done") case <-g2Channel: fmt.Println("g2 done") case <-tm.C: fmt.Println("default") return } }
标签:12,并发,编程,ch1,time,go From: https://www.cnblogs.com/gaoyuechen/p/18441532