Care este diferența dintre concurență și paralelism?
sobes.tech AI
Răspuns de la AI
Concurența este capacitatea unui sistem de a gestiona mai multe sarcini care pot fi executate parțial în același timp, alternând între ele. Paralelismul este executarea simultană a mai multor sarcini pe diferite nuclee ale procesorului.
Pe scurt, concurența se referă la organizarea muncii astfel încât mai multe sarcini să poată progresa, în timp ce paralelismul se referă la executarea lor simultană.
În Go, concurența se realizează cu ajutorul goroutine-urilor și canalelor, iar paralelismul are loc atunci când aceste goroutine-uri sunt executate efectiv în același timp pe diferite nuclee.
Exemplu de concurență în Go:
package main
import (
"fmt"
"time"
)
func task(name string) {
for i := 0; i < 3; i++ {
fmt.Println(name, "pas", i)
time.Sleep(100 * time.Millisecond)
}
}
func main() {
go task("A")
go task("B")
time.Sleep(500 * time.Millisecond)
}
Aici, sarcinile "A" și "B" sunt executate concurent, alternând între ele, și dacă sunt rulate pe un procesor multi-core, pot fi executate în paralel.