Sobes.tech
Junior — Middle

Ce tehnici de procesare paralelă sunt implementate în limbajul Go?

sobes.tech AI

Răspuns de la AI

În Go, sunt implementate următoarele tehnici pentru procesarea sarcinilor paralele:

  • Goroutine — fire ușoare care sunt inițiate cu cuvântul cheie go. Permite executarea funcțiilor în paralel.

  • Canale — mecanism de comunicare între goroutine-uri, care permite transmiterea datelor și sincronizarea execuției.

  • Selecții (select) — construcție pentru a aștepta mai multe operații pe canale, permițând procesarea datelor din mai multe surse.

  • Pachetul sync — conține primitive de sincronizare precum Mutex, WaitGroup, Once, care ajută la gestionarea accesului la resursele comune și la coordonarea finalizării goroutine-urilor.

Exemplu de pornire a unei goroutine și transmitere de date printr-un canal:

package main
import (
    "fmt"
)
func worker(ch chan string) {
    ch <- "gata"
}
func main() {
    ch := make(chan string)
    go worker(ch)
    msg := <-ch
    fmt.Println(msg) // ieșire: gata
}