Sobes.tech
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.