Maison >développement back-end >Golang >Golang peut-il utiliser un processeur multicœur ?

Golang peut-il utiliser un processeur multicœur ?

angryTom
angryTomoriginal
2020-03-17 16:19:233303parcourir

Golang peut-il utiliser un processeur multicœur ?

Golang peut-il utiliser un processeur multicœur ?

Golang peut-il utiliser un processeur multicœur ? Go prend naturellement en charge la programmation multicœur, alors dans quelles circonstances devrions-nous utiliser le multicœur pour accélérer le programme ?

Recommandations associées : Tutoriel Golang

Regardons le programme suivant :

package main
import (
        "runtime"
        "fmt"
        "sync"
  "time"
)
//定义任务队列
var waitgroup sync.WaitGroup
func 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())
}

Nous pouvons le configurer via "runtime.GOMAXPROCS(1)" Exécution monocœur ou multicœur, les résultats de la comparaison montrent que le multicœur est évidemment plus rapide que le monocœur, donc pour le fonctionnement du CPU, l'effet d'accélération du fonctionnement multicœur est très évident.

Site Web PHP chinois, un grand nombre de tutoriels de programmation, des outils de gestion de bases de données Tutoriel navicat, bienvenue pour apprendre !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn