Go
Goroutines
Szukaj…
Wprowadzenie
Goroutine to lekki wątek zarządzany przez środowisko wykonawcze Go.
idź f (x, y, z)
rozpoczyna nową goroutine
f (x, y, z)
Ocena f, x, y i z zachodzi w bieżącej goroutine, a wykonanie f w nowej goroutine.
Goroutine działają w tej samej przestrzeni adresowej, więc dostęp do pamięci współdzielonej musi być zsynchronizowany. Pakiet synchronizacji zawiera przydatne prymitywy, chociaż w Go nie będziesz ich potrzebować dużo, ponieważ istnieją inne prymitywy.
Odniesienie: https://tour.golang.org/concurrency/1
Program podstawowy Goroutines
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")
}
Goroutine to funkcja, która może działać jednocześnie z innymi funkcjami. Aby stworzyć goroutine, używamy słowa kluczowego go
po którym następuje wywołanie funkcji:
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)
}
Zasadniczo wywołanie funkcji wykonuje wszystkie instrukcje w treści funkcji i wraca do następnego wiersza. Ale z goroutynami natychmiast wracamy do następnej linii, ponieważ nie czeka ona na zakończenie funkcji. Scanln
jest więc Scanln
funkcji Scanln
, w przeciwnym razie program został zakończony bez drukowania numerów.