在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、 通过runtime包进行多核设置 1.NumCPU()获取当前系统的cpu核数 2.GOMAXPROCS设置当前程序运行时占用的cpu核数 版本1.6之前默认是使用1个核,而之后是全部使用。 好玩的程序: func doSomething() { var i int for { i++ } } func main() { cpu := runtime.NumCPU() fmt.Println("本机cpu核数:", cpu) fmt.Println("输入模拟的cpu数:") reader := bufio.NewReader(os.Stdin) buf, _ := reader.ReadBytes('\n') cmdStr := (string)(buf) num, err := strconv.Atoi(strings.Trim(cmdStr, "\r\n")) if err != nil || num > cpu || num <= 0 { fmt.Println("输入的数字不正确 err:{0}", err) return } //设置核数 runtime.GOMAXPROCS(num) for i := 0; i < 10; i++ { //做个死循环 go doSomething() } fmt.Println("程序已经开始执行") time.Sleep(time.Second * 30) for j := 5; j > 0; j-- { fmt.Printf("程序倒计时退出: %ds...\n", j) time.Sleep(time.Second) } fmt.Printf("程序退出") } 我的电脑是8核的,分别运行1 2 4 8,看下cpu的使用率: 图一 未开始运行 图二 运行1个cpu
图三 运行2个cpu
图四 运行4个cpu
图五 运行8个cpu
二、Goroutine的调度原理复习 之前的记录 https://www.cnblogs.com/dcz2015/p/10106866.html |
请发表评论