select:
如果存在多个channel,我们该如何操作?
go语言里面提供了一个关键字select,通过select可以监听channel上的数据流动。
select默认是阻塞的,只有当监听的channel中发送或接收可以进行时才会远行,当多个channel都准备好的时候,select是随机选择一个执行的。
在select里面还有default语法,select其实就是类似switch的功能,
default就是当监听的channel都没有准备好的时候,默认执行的(select 不再阻塞等待channel)
package main
import (
"fmt"
"runtime"
"time"
)
func main() {
cpunum := runtime.NumCPU()
runtime.GOMAXPROCS(4)
for i := 0;i <8 ; i++ {
go func() {
for {
}
}()
}
fmt.Printf("%d\n",cpunum)
time.Sleep(10*time.Second)
}