Sobes.tech
Middle

Чиме се конкуренција разликује од паралелности?

sobes.tech АИ

Одговор од АИ

Конкурентност је способност система да управља са више задатака који могу делимично да се извршавају истовремено, прелазећи између њих. Паралелност је истовремено извршавање више задатака на различитим процесорским језгрићима.

Једноставније речено, конкуренција се односи на организацију рада тако да више задатака може напредовати, док се паралелност односи на њихово истовремено извршавање.

У Go-у, конкуренција се постиже помоћу горутинa и канала, а паралелност када се те горутине стварно извршавају истовремено на различитим језгрићима процесора.

Пример конкуренције у Go-у:

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

Овде, задатци "A" и "B" се извршавају конкуретно, наизменично, а ако се покрену на вишеједрном процесору, могу се извршавати паралелно.