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