Sobes.tech
Middle

Каква е разликата между конкуренцията и паралелността?

sobes.tech AI

Отговор от AI

Конкурентността е способността на система да управлява няколко задачи, които могат да се изпълняват частично едновременно, превключвайки между тях. Паралелността е едновременната изпълнение на няколко задачи на различни процесорни ядра.

По-просто казано, конкурентността е за организацията на работата, така че няколко задачи да могат да напредват, а паралелността — за едновременното изпълнение на тези задачи.

В Go конкурентността се постига чрез горутини и канали, а паралелността — когато тези горутини реално се изпълняват едновременно на различни ядра.

Пример за конкурентност в 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" се изпълняват конкурентно, превключвайки между тях, а ако се стартират на многоядрен процесор, могат да се изпълняват паралелно.