Re[9]: Эрланг и все-все-все (на самом деле, не совсем)
От: Evgeny.Panasyuk Россия  
Дата: 29.06.15 12:11
Оценка: 8 (3)
Здравствуйте, neFormal, Вы писали:

I>>>>Раньше вообще не знали о программировании и ничего, жили люди. Даже до изобретения колеса тоже как то справлялись.

F>>>и что же изменилось к лучшему с новым термином?
I>>Разные задачи, что очевидно, решаются по разному.
F>поясни же
F>параллельные задачи — ...
F>конкурентные задачи — ...

В этом и предыдущем топике уже многократно поясняли, причём разные участники. Если на пальцах, то:

* При параллельном программировании главная цель состоит в том, чтобы как можно быстрее получить результат, и достигается это путём задействования всех доступных вычислительных ресурсов (грубо говоря всех ядер). Железные потоки/процессы здесь — это необходимость, а не средство упрощения кода. Более того, однопоточный вариант является самым простым, но естественно не задействует все вычислительные ресурсы.
В самом коде обычно нет никакого явного управления потоками и взаимодействия между ними. Всё это прекрасно скрывается внутри библиотек типа TBB, PPL, Thrust и различных реализаций MapReduce — предоставляя пользователю параллельные примитивы типа parallel_transform, parallel_foreach, parallel_for и parallel_reduce.
Конкретный пример — оптимизационная задача: есть набор параметров, ограничения и целевая функция. Необходимо найти значения параметров соответствующие минимуму/максимуму целевой функции. Вычисление значений целевой функции для разных параметров можно выполнять параллельно в разных вычислительных потоках, улучшая утилизацию железа.

* При конкурентом программировании сама задача решается на порядки проще с использованием процессов, нежели без них. То есть процессы здесь это не необходимость, а благо. Причём процессы здесь необязательно железные, даже более того — всё может работать в одном железном потоке.
Каноничный пример: сетевой сервер обслуживающий клиентов проще всего выражается через модель наподобие "один логический поток на одного клиента".

(Вообще говоря и параллельное и конкурентное программирование охватывают бОльшие области чем я описал, но для первого приближения такого описания достаточно)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.