Sobes.tech
Junior — Middle

Cum este implementat modelul de concurență în limbajul Golang?

sobes.tech AI

Răspuns de la AI

În limbajul Go, modelul de concurență se bazează pe goroutines și canale.

  • Goroutines sunt fire ușoare care pornesc cu cuvântul cheie go. Ele permit executarea funcțiilor în paralel fără costuri semnificative de resurse.

  • Canale sunt canale tipizate pentru schimbul de date între goroutines, asigurând sincronizare și schimb sigur de informații.

Exemplu:

package main

import (
    "fmt"
    "time"
)

func worker(id int, ch chan string) {
    time.Sleep(time.Second)
    ch <- fmt.Sprintf("Worker %d terminat", 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)
    }
}

În acest exemplu, trei goroutines efectuează muncă în paralel și trimit rezultatul într-un canal, de unde thread-ul principal le citește.

Astfel, Go simplifică programarea concurentă, ascunzând complexitatea firelor și sincronizării.