Le traitement parallèle dans golang

Donné le code suivant:

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    for i := 0; i < 3; i++ {
        go f(i)
    }

    //prevent main from exiting immediately
    var input string
    fmt.Scanln(&input)
}

func f(n int) {
    for i := 0; i < 10; i++ {
        dowork(n, i)
        amt := time.Duration(rand.Intn(250))
        time.Sleep(time.Millisecond * amt)
    }
}

func dowork(goroutine, loopindex int) {
    //simulate work
    time.Sleep(time.Second * time.Duration(5))
    fmt.Printf("gr[%d]: i=%d\n", goroutine, loopindex)
}

Puis-je supposer que l '"dowork' fonction sera exécutée en parallèle?

Est-ce une bonne façon de réaliser le parallélisme ou est-il préférable d'utiliser les canaux et séparé dowork " les travailleurs pour chaque goroutine?

  • Juste au cas où quelqu'un trouve ça intéressant: Cet article qui explique comment faire en parallèle pour les boucles en Aller.
  • Grand merci à ce site web se révèle être une ressource fantastique pour moi!
InformationsquelleAutor wilsonfiifi | 2014-08-03