Sobes.tech
Junior — Middle

Kako je implementirana paralelnost i konkurencija u jeziku Go?

sobes.tech АИ

Одговор од АИ

U jeziku Go, paralelnost i konkurentnost realizuju se putem gorutina i kanala.

  • Gorutine su lagani tokovi koji se pokreću pomoću ključne reči go. Omogućavaju izvršavanje funkcija asinhrono i paralelno.

  • Kanali služe za komunikaciju između gorutina i sinhronizaciju podataka. Omogućavaju siguran prenos vrednosti između gorutina, izbegavajući trke.

Primer:

package main

import (
    "fmt"
    "time"
)

func worker(id int, ch chan string) {
    time.Sleep(time.Second)
    ch <- fmt.Sprintf("Radnik %d završio", id)
}

func main() {
    ch := make(chan string)
    for i := 1; i <= 3; i++ {
        go worker(i, ch)
    }
    for i := 1; i <= 3; i++ {
        msg := <-ch
        fmt.Println(msg)
    }
}

Na ovaj način, Go pruža jednostavne i efikasne načine za pisanje konkurentnih programa bez složenog upravljanja nitima.