Golang能使用多核cpu吗

Golang能使用多核cpu。对于多核编程,go是天生支持,那么我们在什么情况下应该用多核心来加速程序呢?

相关推荐:golang教程

我们来看如下程序:

package mainimport (        "runtime"        "fmt"        "sync"  "time")//定义任务队列var waitgroup sync.WaitGroupfunc xtgxiso(num int) {        for i:=1;i<=1000000000;i++{    num = num+i    num = num-i    num = num*i    num = num/i  }        waitgroup.Done() //任务完成,将任务队列中的任务数量-1,其实.Done就是.Add(-1)}func main() {  //记录开始时间  start := time.Now()        //设置最大的可同时使用的CPU核数和实际cpu核数一致        runtime.GOMAXPROCS(1)        for i := 1; i <= 10; i++ {                waitgroup.Add(1) //每创建一个goroutine,就把任务队列中任务的数量+1                go xtgxiso(i)        }        waitgroup.Wait() //Wait()这里会发生阻塞,直到队列中所有的任务结束就会解除阻塞 //记录结束时间  end :=  time.Now()  //输出执行时间,单位为秒。  fmt.Println(end.Sub(start).Seconds())}

我们可以通过“runtime.GOMAXPROCS(1)”来设置是单核还是多核心执行,对比结果发现,多核明显比单核快,所以对于CPU的运行上,多核运行加速效果是很明显的。

PHP中文网,大量编程教程、数据库管理工具navicat教程,欢迎学习!

更多相关文章

  1. 网卡多队列技术与RSS功能的详细介绍
  2. 芋道 Spring Boot 消息队列 RocketMQ 入门
  3. 分布式消息队列 RocketMQ源码解析:事务消息
  4. 分布式消息队列 RocketMQ源码解析:Filtersrv
  5. 分布式消息队列 RocketMQ 源码分析 —— 定时消息与消息重试
  6. 分布式消息队列 RocketMQ 源码分析 —— 高可用
  7. 分布式消息队列 RocketMQ 源码分析 —— Message 拉取与消费(上)
  8. 分布式消息队列 RocketMQ 源码分析 —— Message 拉取与消费(下)
  9. 数据结构之优先队列和堆

随机推荐

  1. phpmyadmin的乱码问题
  2. 用PHP计算字符串中元音的简单方法?
  3. 我无法定义我的错误
  4. 节点js / Express替换LAMP
  5. 如何使用phpunit测试用例测试ajax调用?
  6. 在数据库中存储行数或动态获取
  7. 3-腿和2腿的auth有什么区别?
  8. 网站优化之PHPCMS如何开启伪静态
  9. 如何在php中的谷歌分析中显示搜索概述
  10. 如何为MySQL中包含记录的现有表创建唯一