В чем разница между асинхронностью и параллелизмом

«В чем разница между асинхронностью и параллелизмом» — вопрос из категории Архитектура, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Асинхронность — это модель выполнения задач без блокировки потока, где операции могут выполняться в фоне с уведомлением о завершении (например, через колбэки или каналы). Параллелизм — это одновременное выполнение нескольких задач на разных ядрах CPU.

Пример асинхронности в Go:

go func() {
    // выполняется асинхронно
}()

Пример параллелизма (при наличии многоядерного CPU):

runtime.GOMAXPROCS(4) // используем 4 ядра
go task1() // могут выполняться параллельно
go task2() // на разных ядрах

Ключевое отличие: асинхронность — про организацию кода, параллелизм — про физическое выполнение. В Go горутины могут работать и асинхронно, и параллельно, в зависимости от GOMAXPROCS.