Go语言中Goroutine的设置方式
作者:奋斗的大橙子 时间:2024-05-13 10:40:43
一、 通过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的调度原理复习
之前的记录 Go语言中并发的工作原理
来源:https://www.cnblogs.com/dcz2015/p/11225305.html
标签:Go,Golang,设置,Goroutine
0
投稿
猜你喜欢
谈切图优化加速图片显示—淘宝实例
2008-01-30 12:24:00
Python实现随机取一个矩阵数组的某几行
2021-10-04 16:45:52
基于go实例网络存储协议详解
2024-04-25 13:19:30
Js的MessageBox
2008-05-16 10:25:00
python实战之德州扑克第三步-比较大小
2022-01-01 22:27:11
兼容主流浏览器的【表情插入】源码
2010-07-02 13:02:00
详解如何使用Pytorch进行多卡训练
2023-08-02 06:43:29
MySQL数据库查询性能优化的4个技巧干货
2024-01-13 23:25:16
详解Python中如何写控制台进度条的整理
2023-12-31 03:32:51
解决Pycharm出现的部分快捷键无效问题
2021-09-12 12:49:34
DDL、DML和DCL的区别与理解
2024-01-23 23:08:01
python pptx复制指定页的ppt教程
2023-08-20 22:54:50
如何把Recordset转换成彩色的XML文件?
2009-11-02 20:22:00
何在MySQL数据库中定义外键
2009-12-17 12:29:00
Python encode()方法和decode()方法详解
2023-06-16 11:47:15
Django之PopUp的具体实现方法
2023-03-26 13:04:54
asp Access数据备份,还原,压缩类代码
2011-03-07 11:16:00
简单了解python shutil模块原理及使用方法
2023-02-12 22:07:44
sql2005 HashBytes 加密函数
2024-01-21 11:28:23
Go语言实现文件上传
2023-07-08 18:26:38