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.