Go语言中Goroutine的设置
2024-08-27 02:26:48
一、 通过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
最新文章
- 【Python升级录】--基础知识
- ASP.NET复合控件
- Python包管理工具介绍
- jni.h头文件详解二
- [TYVJ] P1025 单数?双数?
- Axure 原型设计工具画业务流程图
- POJ 2446 Chessboard
- OpenGL--第一个OpenGL程序
- Codeforces Round #248 (Div. 1)——Nanami&;#39;s Digital Board
- MQL5 获取最后一单 利润
- CJOJ 2171 火车站开饭店(树型动态规划)
- Leetcode_125_Valid Palindrome
- 《k8s-1.13版本源码分析》上github
- python实现有序字典
- Python selenium根据class定位页面元素
- vue中$refs的使用
- SSM面试题
- 生命游戏&;一维细胞自动机 笔记
- 896. Monotonic Array单调数组
- [转]关于vs2005、vs2008和vs2010项目互转的总结
热门文章
- 【linux基础-err】 tar命令-stdin: not in gzip format
- 【Leetcode_easy】1042. Flower Planting With No Adjacent
- SpringMVC:学习笔记(11)——依赖注入与@Autowired
- mac tar 解压
- 使用fiddl模拟弱网
- 题解 Luogu P1099 【树网的核】
- springboot处理事务
- 禁止服务向 eureka 上注册配置文件
- Spring Cloud Alibaba学习笔记(8) - RocketMQ术语与概念
- Java Comparable与Comparator区别