Конкурентность — свойство системы решать множество задач одновременно. Это не обязательно означает выполнение задач в один и тот же момент времени. На одном ядре процессора конкурентность может быть достигнута путем переключения между задачами (чередование).
Параллелизм — свойство системы выполнять множество задач в один и тот же момент времени. Для этого требуется несколько ядер процессора или несколько процессоров.
| Свойство | Конкурентность | Параллелизм |
|---|---|---|
| Цель | Справиться с большим количеством задач | Быстро выполнять много задач |
| Выполнение | Чередованием (на одном ядре) или параллельно (на нескольких) | Одновременно (на нескольких ядрах) |
| Требования | Может быть достигнут на одном ядре | Требует нескольких ядер или процессоров |
| Пример | Горутины в Go | Выполнение goroutine на разных ядрах CPU |
Конкурентность — это способствовать решению многих задач "одновременно", в то время как параллелизм — это фактическое выполнение многих задач "одновременно". Go поддерживает и то, и другое: goroutine обеспечивают конкурентность, а планировщик Go может распределять их по доступным ядрам для достижения параллелизма.
go
go