Sobes.tech
Middle

Kuo skiriasi konkurencija nuo lygiagrečių?

sobes.tech AI

Atsakymas iš AI

Konkurencija yra sistemos gebėjimas valdyti kelias užduotis, kurios gali būti iš dalies vykdomos vienu metu, keičiantis tarp jų. Paralele yra kelių užduočių vienalaikis vykdymas skirtinguose procesoriaus branduoliuose.

Paprasčiau tariant, konkurencija yra apie darbo organizavimą, kad keli uždaviniai galėtų progresuoti, o paralele — apie jų vienalaikį vykdymą.

Go kalboje konkurencija pasiekiama naudojant gorutinas ir kanalus, o paralele — kai šios gorutinos tikrai vykdomos vienu metu skirtinguose branduoliuose.

Pavyzdys konkurencijos Go:

package main
import (
    "fmt"
    "time"
)
func task(name string) {
    for i := 0; i < 3; i++ {
        fmt.Println(name, "žingsnis", i)
        time.Sleep(100 * time.Millisecond)
    }
}
func main() {
    go task("A")
    go task("B")
    time.Sleep(500 * time.Millisecond)
}

Čia, užduotys "A" ir "B" vykdomos konkurencingai, keičiasi viena su kita, ir jei jos vykdomos daugiabrandiniame procesoriuje, jos gali būti vykdomos paraleliai.