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.