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的使用率:

Go语言中Goroutine的设置方式

图一 未开始运行

Go语言中Goroutine的设置方式

图二 运行1个cpu

Go语言中Goroutine的设置方式

图三 运行2个cpu

Go语言中Goroutine的设置方式

图四 运行4个cpu

Go语言中Goroutine的设置方式

图五 运行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
  • asp之家 网络编程 m.aspxhome.com