Zoeken…


Invoering

Een goroutine is een lichtgewicht draad die wordt beheerd door de Go-runtime.

go f (x, y, z)

start een nieuwe goroutine

f (x, y, z)

De evaluatie van f, x, y en z gebeurt in de huidige goroutine en de uitvoering van f gebeurt in de nieuwe goroutine.

Goroutines worden in dezelfde adresruimte uitgevoerd, dus toegang tot gedeeld geheugen moet worden gesynchroniseerd. Het synchronisatiepakket biedt nuttige primitieven, hoewel je ze niet veel nodig hebt in Go, omdat er andere primitieven zijn.

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

Goroutines basisprogramma

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

Een goroutine is een functie die gelijktijdig met andere functies kan worden uitgevoerd. Om een goroutine te maken gebruiken we het trefwoord go gevolgd door een functie-aanroep:

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

Over het algemeen voert de functie-aanroep alle instructies in de hoofdtekst uit en keert u terug naar de volgende regel. Maar met goroutines keren we onmiddellijk terug naar de volgende regel omdat deze niet wacht tot de functie is voltooid. Dus een oproep naar een Scanln functie inbegrepen, anders is het programma afgesloten zonder de nummers af te drukken.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow