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.