Sobes.tech
Back to questions
Middle
9

Чем конкурентность отличается от параллельности?

Companies where asked
Effective Technologies

Answer from AI

sobes.tech AI

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

Проще говоря, конкурентность — это про организацию работы, чтобы несколько задач могли прогрессировать, а параллельность — про одновременное выполнение этих задач.

В Go конкурентность достигается с помощью горутин и каналов, а параллельность — когда эти горутины реально выполняются одновременно на разных ядрах процессора.

Пример конкурентности в Go:

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

Здесь задачи "A" и "B" выполняются конкурентно, переключаясь между собой, а если запустить на многоядерном процессоре, они могут выполняться параллельно.