goroutine

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
",cpunum)
	time.Sleep(10*time.Second)
}
原文地址:https://www.cnblogs.com/Csir/p/9381951.html