Sobes.tech
Middle

Kuidas erineb konkurents ja paralleelsus?

sobes.tech AI

Vastus AI-lt

Konkurentnost je sposobnost sistema da upravlja sa više zadataka koji se mogu delimično istovremeno izvršavati, prebacujući se između njih. Paralelizam je istovremeno izvršavanje više zadataka na različitim jezgrima procesora.

Jednostavno rečeno, konkurentnost se odnosi na organizaciju rada tako da više zadataka može napredovati, dok se paralelizam odnosi na njihovo istovremeno izvršavanje.

U Go-u, konkurentnost se postiže pomoću goroutine i kanala, a paralelizam kada se te goroutine-ove stvarno izvršavaju istovremeno na različitim jezgrima procesora.

Primer konkurentnosti u Go-u:

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

Ovde, zadaci "A" i "B" se izvršavaju konkurentno, naizmenično, a ako se pokrenu na višejedrnom procesoru, mogu se izvršavati paralelno.