Sobes.tech
Junior — Middle

Explicați conceptul de concurență în limbajul de programare Go și rolul său în dezvoltarea aplicațiilor paralele

sobes.tech AI

Răspuns de la AI

În Go, concurența (concurrency) este capacitatea unui program de a executa mai multe sarcini simultan, utilizând eficient resursele procesorului. În limbajul Go, acest lucru se realizează prin goroutines, care sunt fire ușoare inițiate cu cuvântul cheie go.

Concurența permite scrierea de aplicații paralele, în care diferite părți ale codului sunt executate în același timp, ceea ce crește performanța și capacitatea de răspuns a programelor.

Pentru sincronizare și schimb de date între goroutines, se folosesc canale (channels), care asigură o comunicare sigură fără utilizarea explicită a blocărilor.

Exemplu:

package main
import (
    "fmt"
    "time"
)

func worker(id int) {
    fmt.Printf("Lucrător %d începe\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Lucrător %d termină\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go worker(i) // pornire goroutine
    }
    time.Sleep(2 * time.Second) // așteptare finalizare goroutine
}

În acest exemplu, trei goroutines rulează simultan, demonstrând concurența în Go.