Junior — Middle
Koje tehnike obrade paralelnih zadataka su implementirane u jeziku Go?
sobes.tech АИ
Одговор од АИ
U jeziku Go implementirane su sledeće tehnike za obradu paralelnih zadataka:
-
Goroutine — lagani niti koje se pokreću pomoću ključne reči
go. Omogućavaju paralelno izvršavanje funkcija. -
Kanali — mehanizam komunikacije između goroutine-a, koji omogućava prenos podataka i sinhronizaciju izvršavanja.
-
Selektori (select) — konstrukcija za čekanje na više operacija na kanalima, omogućavajući obradu podataka iz više izvora.
-
Paket sync — sadrži primitive za sinhronizaciju poput
Mutex,WaitGroup,Once, koji pomažu u upravljanju pristupom zajedničkim resursima i koordinaciji završetka goroutine-a.
Primer pokretanja goroutine-a i prenosa podataka putem kanala:
package main
import (
"fmt"
)
func worker(ch chan string) {
ch <- "spreman"
}
func main() {
ch := make(chan string)
go worker(ch)
msg := <-ch
fmt.Println(msg) // izlaz: spreman
}