Ricerca…


introduzione

Una goroutine è un thread leggero gestito dal runtime Go.

vai f (x, y, z)

avvia una nuova goroutine in esecuzione

f (x, y, z)

La valutazione di f, x, yez avviene nella goroutine corrente e l'esecuzione di f avviene nella nuova goroutine.

Le goroutine vengono eseguite nello stesso spazio degli indirizzi, pertanto l'accesso alla memoria condivisa deve essere sincronizzato. Il pacchetto di sincronizzazione fornisce primitive utili, anche se non ne avrete bisogno molto in Go in quanto vi sono altre primitive.

Riferimento: https://tour.golang.org/concurrency/1

Goroutines Programma base

package main

import (
    "fmt"
    "time"
)

func say(s string) {
    for i := 0; i < 5; i++ {
        time.Sleep(100 * time.Millisecond)
        fmt.Println(s)
    }
}

func main() {
    go say("world")
    say("hello")
}

Una goroutine è una funzione che è in grado di funzionare in concomitanza con altre funzioni. Per creare una goroutine usiamo la parola chiave go seguita da una funzione invocazione:

package main

import "fmt"

func f(n int) {
  for i := 0; i < 10; i++ {
    fmt.Println(n, ":", i)
  }
}

func main() {
  go f(0)
  var input string
  fmt.Scanln(&input)
}

Generalmente, la chiamata di funzione esegue tutte le istruzioni all'interno del corpo della funzione e torna alla riga successiva. Ma con le goroutine torniamo immediatamente alla riga successiva in quanto non aspetta che la funzione si completi. Quindi, è stata inclusa una chiamata a una funzione Scanln , altrimenti il ​​programma è stato chiuso senza stampare i numeri.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow