Sök…


Introduktion

En goroutine är en lätt tråd som hanteras av Go runtime.

gå f (x, y, z)

startar en ny goroutin kör

f (x, y, z)

Utvärderingen av f, x, y och z sker i den aktuella goroutinen och exekveringen av f sker i den nya goroutinen.

Goroutiner körs i samma adressutrymme, så åtkomst till delat minne måste synkroniseras. Synkroniseringspaketet innehåller användbara primitiv, även om du inte behöver dem mycket i Go eftersom det finns andra primitiva.

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

Goroutines Basic Program

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")
}

En goroutin är en funktion som kan köras samtidigt med andra funktioner. För att skapa en goroutine använder vi nyckelordet go följt av en funktionskall:

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)
}

I allmänhet kör funktionssamtal alla uttalanden inuti funktionskroppen och återgår till nästa rad. Men med goroutiner återgår vi omedelbart till nästa rad eftersom det inte väntar på att funktionen ska slutföras. Så ingår ett samtal till en Scanln funktion, annars har programmet gått ut utan att skriva ut siffrorna.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow