select语句中实现优先级
此示例要求 ch1 要先于 ch2 被处理。
func worker(ch1, ch2 <-chan int) {
for {
select {
case job1 := <-ch1:
println(job1)
case job2 := <-ch2:
label:
// for 循环保证 ch1 被消费完采取处理 ch2
for {
select {
case job1 := <-ch1:
println(job1) // 执行 job1
default:
break label
}
}
println(job2) // 执行 job2
}
}
}