Параллельное программирование по сравнению с асинхронным программированием - PullRequest
0 голосов
/ 02 августа 2011

Чем параллельное программирование отличается от асинхронного программирования?

Я знаю, что асинхронное программирование используется для работы в фоновых потоках / рабочих или в ожидании что-то, чтобы закончить, как I / O.

* Могут ли задачи, выполняемые параллельно, быть также задачами в асинхронном режиме?

* Можно ли выполнять задачи в асинхронном режиме параллельно?

Немного смущает меня.

Есть ли примеры для вышесказанного?

1 Ответ

2 голосов
/ 02 августа 2011

Многопоточное, многопроцессное и асинхронное программирование - все это методы параллелизма, с помощью которых вы можете выполнять более чем одну вещь за раз в одной программе.Если у вас есть только один процессор / машина, ни один из них не является «параллельным».Все они просто передают выполнение некоторого кода, чтобы вы «чувствовали», что они все выполняются вместе.

Первые два зависят от задач переключения ЦП.Вы просто как-то говорите компьютеру, что вы хотите именно этого, а затем позволяете ему решать, как распределять время и другие ресурсы на различные задачи.Здесь мы рассмотрим различия между потоками и процессами.

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

...