一、 通过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 <= {
fmt.Println("输入的数字不正确 err:{0}", err)
return
} //设置核数
runtime.GOMAXPROCS(num) for i := ; i < ; i++ {
//做个死循环
go doSomething()
} fmt.Println("程序已经开始执行") time.Sleep(time.Second * ) for j := ; j > ; 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

最新文章

  1. 【Python升级录】--基础知识
  2. ASP.NET复合控件
  3. Python包管理工具介绍
  4. jni.h头文件详解二
  5. [TYVJ] P1025 单数?双数?
  6. Axure 原型设计工具画业务流程图
  7. POJ 2446 Chessboard
  8. OpenGL--第一个OpenGL程序
  9. Codeforces Round #248 (Div. 1)——Nanami&amp;#39;s Digital Board
  10. MQL5 获取最后一单 利润
  11. CJOJ 2171 火车站开饭店(树型动态规划)
  12. Leetcode_125_Valid Palindrome
  13. 《k8s-1.13版本源码分析》上github
  14. python实现有序字典
  15. Python selenium根据class定位页面元素
  16. vue中$refs的使用
  17. SSM面试题
  18. 生命游戏&amp;一维细胞自动机 笔记
  19. 896. Monotonic Array单调数组
  20. [转]关于vs2005、vs2008和vs2010项目互转的总结

热门文章

  1. 【linux基础-err】 tar命令-stdin: not in gzip format
  2. 【Leetcode_easy】1042. Flower Planting With No Adjacent
  3. SpringMVC:学习笔记(11)——依赖注入与@Autowired
  4. mac tar 解压
  5. 使用fiddl模拟弱网
  6. 题解 Luogu P1099 【树网的核】
  7. springboot处理事务
  8. 禁止服务向 eureka 上注册配置文件
  9. Spring Cloud Alibaba学习笔记(8) - RocketMQ术语与概念
  10. Java Comparable与Comparator区别