Sobes.tech
Middle

Mi a különbség a verseny és a párhuzamosság között?

sobes.tech MI

Válasz az MI-től

A versenyzés egy rendszer képessége arra, hogy több feladatot kezeljen, amelyek részben egyidejűleg futtathatók, váltogatva közöttük. A párhuzamosság pedig több feladat egyidejű végrehajtása különböző processzormagokon.

Egyszerűbben fogalmazva, a versenyzés arról szól, hogy a munka szervezése lehetővé tegye több feladat haladását, míg a párhuzamosság ezeknek a feladatoknak az egyidejű végrehajtását jelenti.

Go-ban a versenyzést goroutine-okon és csatornákon keresztül érik el, míg a párhuzamosság akkor fordul elő, amikor ezek a goroutine-ok ténylegesen egyidejűleg futnak különböző magokon.

Példa a versenyzésre Go-ban:

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

Itt az "A" és "B" feladatok versenyben futnak, váltogatva egymás között, és ha többmagos processzoron futtatjuk őket, párhuzamosan is végrehajthatók.