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