← 返回首页
select的执行机制是怎样的?
select的执行机制是随机选择。
如果多个case同时满足条件,Go会随机选择一个执行,这避免了饥饿问题。
如果没有case能执行就会执行default,如果没有default,当前goroutine会阻塞等待。
select {
case data := <-ch1:
// 处理ch1的数据
case ch2 <- value:
// 向ch2发送数据
case <-timeout:
// 超时处理
default:
// 所有channel都不可用时执行
}