Ответ
Конкурентность (Concurrency) — это концепция проектирования, при которой несколько задач выглядят выполняющимися одновременно за счет быстрого переключения контекста между ними на одном или нескольких ядрах процессора. Акцент на структурирование независимых задач.
Параллелизм (Parallelism) — это физическое одновременное выполнение нескольких задач на разных ядрах/процессорах. Требует многопроцессорной системы.
Ключевое различие: Конкурентность — про логическую одновременность (дизайн системы), параллелизм — про физическую одновременность (исполнение).
Пример в Swift (Grand Central Dispatch):
import Foundation
// Конкурентность: задачи ставятся в очередь и выполняются,
// возможно, с переключением контекста
let concurrentQueue = DispatchQueue(label: "concurrent", attributes: .concurrent)
concurrentQueue.async { print("Concurrent Task 1") }
concurrentQueue.async { print("Concurrent Task 2") }
// Параллелизм: задачи выполняются физически одновременно
// на доступных ядрах (если система поддерживает)
DispatchQueue.concurrentPerform(iterations: 4) { iteration in
print("Parallel task (iteration) on thread: (Thread.current)")
}
Практический смысл:
- На одноядерном процессоре возможна только конкурентность.
- Многопоточное программирование часто реализует конкурентность.
- Параллельные вычисления (например, обработка изображений) используют параллелизм для ускорения.