Многопоточное, многопроцессное и асинхронное программирование - все это методы параллелизма, с помощью которых вы можете выполнять более чем одну вещь за раз в одной программе.Если у вас есть только один процессор / машина, ни один из них не является «параллельным».Все они просто передают выполнение некоторого кода, чтобы вы «чувствовали», что они все выполняются вместе.
Первые два зависят от задач переключения ЦП.Вы просто как-то говорите компьютеру, что вы хотите именно этого, а затем позволяете ему решать, как распределять время и другие ресурсы на различные задачи.Здесь мы рассмотрим различия между потоками и процессами.
Асинхронное программирование означает, что ваше приложение контролирует переключение этих задач, которые вы хотите выполнить.Грубый пример - когда есть 2 канала ввода / вывода, которые вы хотите читать / записывать.Ваше приложение может сортировать данные от 1 до 2, на которых есть данные.Когда это произойдет, он будет считывать данные из 2, а затем возобновит отправку в 1, а затем переключится на отправку данных в 2. Идея состоит в том, что вы ждете, пока есть некоторые события, которые необходимо обслужить, и затем переключаетесь между событиями согласноналичие и необходимость.В некотором смысле вы вручную выполняете планирование процессов с помощью таких приложений.Одним из преимуществ является то, что системные издержки, связанные с несколькими процессами / потоками, отсутствуют.Многие асинхронные подпрограммы используют системный вызов select .