Middle
Aký je rozdiel medzi konkurencieschopnosťou a paralelnosťou?
sobes.tech AI
Odpoveď od AI
Konkurentnosť je schopnosť systému riadiť viacero úloh, ktoré sa môžu čiastočne vykonávať súčasne, prepínaním medzi nimi. Paralelita je súčasné vykonávanie viacerých úloh na rôznych procesorových jadrách.
Jednoducho povedané, konkurentnosť sa týka organizácie práce tak, aby niekoľko úloh mohlo postupovať, zatiaľ čo paralelita sa týka ich súčasného vykonávania.
V Go je konkurentnosť dosiahnutá pomocou gorutín a kanálov, a paralelita nastáva, keď tieto gorutiny skutočne bežia súčasne na rôznych jadrách procesora.
Príklad konkurentnosti v Go:
package main
import (
"fmt"
"time"
)
func task(name string) {
for i := 0; i < 3; i++ {
fmt.Println(name, "krok", i)
time.Sleep(100 * time.Millisecond)
}
}
func main() {
go task("A")
go task("B")
time.Sleep(500 * time.Millisecond)
}
Tu sa úlohy "A" a "B" vykonávajú konkurentne, striedavo, a ak ich spustíme na viacjadrovom procesore, môžu sa vykonávať paralelne.