Какая разница между параллельным и многопоточным программированием?

Параллельное и многопоточное программированием часто встречаются как два отдельных пункта. Можете доходчиво объяснить в чем существенная разница между эти подходами. Может есть какие-то хорошие материалы по этой теме? Спасибо.
UPD. нашел интересную статья, которая оставила еще больше вопросов. Concurrency_vs_Parallelism.png
  • Вопрос задан
  • 12707 просмотров
Решения вопроса 1
DmitryITWorksMakarov
@DmitryITWorksMakarov
При многопоточном программировании имеется несколько потоков, которые выполняют разные "программы", взаимодействующие друг с другом. Например, поток пользовательского интерфейса, поток вычислений, поток обработки ввода/вывода. Многопоточное программирование позволяет упростить (при адекватном подходе) архитектуру программы, но требует отдельных навыков при проектировании и отладке.

Параллельное программирование применяется для численных расчетов, или, например, в компьютерной графике. В этом случае "программа" одна, данные разные. Использование конвейеризации и большого количества вычислительных ядер позволяет получить значительный прирост в скорости вычислений.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
angrySCV
@angrySCV
machine learning, programming, startuping
по-моему вполне ясная статья, различие указано тамже,
просто правильно переведите канкарэнси и паралелизм, как конкурентное выполнение и параллельное, конкурентное может выполнятся на 1 ядерной машине используя переключение потоков, где разные потоки конкурируют за время работы процессора, при чём это время не обязательно должно по равному распределяться, параллелизм означает что задачи выполняются параллельно например на разных ядрах (хотя могут использовать и параллелизм на основе конкурентного выполнения потоков)
при этом:
Parallelism requires concurrency, but concurrency does not guarantee parallelism.
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
ИМХО - разница философская. Либо решать разные задачи параллельно, либо разбивать длинные типовые вычисления на отдельные потоки.
Ответ написан
Комментировать
@Mercury13
Программист на «си с крестами» и не только
Параллельное программирование — расчёт чего-либо на нескольких вычислительных ядрах.
Многопоточное программирование — написание программ, работающих в несколько потоков.

Параллельное, но не многопоточное: SETI@Home и прочие распределённые системы.
Многопоточное, но не параллельное: шахматный ИИ работает независимо от интерфейса: пока человек думает, программа считает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы