Golang 多路复用
在Go语言中,多路复用通常指的是使用select
语句来同时监听多个通道(channel)上的数据。select
语句允许Go程(goroutine)在多个通道上等待,当任何一个通道可读或可写时,相应的case会被执行。
下面是一个使用多路复用的简单例子:
package main
import (
"fmt"
"time"
)
func main() {
tick := time.Tick(100 * time.Millisecond)
boom := time.After(500 * time.Millisecond)
for {
select {
case <-tick:
fmt.Println("Tick.")
case <-boom:
fmt.Println("BOOM!")
return
default:
fmt.Println(" .")
time.Sleep(50 * time.Millisecond)
}
}
}
在这个例子中,我们定义了两个通道:tick
是每100毫秒发送一次的计时器通道,boom
是在500毫秒后发送的超时通道。在select
语句中,我们监听这三个通道。当tick
通道接收到数据时,打印"Tick.";当boom
通道接收到数据时,打印"BOOM!"并退出循环。如果所有通道都没有数据,则执行default case,打印一个点并休眠。这个例子展示了如何使用多路复用来处理不同的事件或定时器。
评论已关闭