Junior — Middle
Jak realizowane są obliczenia równoległe w języku Go?
sobes.tech AI
Odpowiedź od AI
W języku Go obliczenia równoległe realizowane są za pomocą goroutines (goroutines) i kanałów (channels).
Goroutines to lekkie wątki, które uruchamia się za pomocą słowa kluczowego go. Pozwalają na wykonywanie funkcji asynchronicznie i równolegle.
Przykład równoległego uruchomienia dwóch funkcji:
func zadanie(id int) {
fmt.Printf("Zadanie %d rozpoczęte\n", id)
// symulacja pracy
time.Sleep(time.Second)
fmt.Printf("Zadanie %d zakończone\n", id)
}
func main() {
go zadanie(1)
go zadanie(2)
time.Sleep(2 * time.Second) // aby goroutines zdążyły się zakończyć
}
Kanały służą do synchronizacji i przesyłania danych między goroutines, co umożliwia bezpieczną wymianę informacji bez użycia blokad.
W ten sposób Go zapewnia proste i skuteczne środki do organizacji obliczeń równoległych.