Archive for Март, 2008
Обзор способов параллельного программирования
by dmitry on Март.10, 2008, under Распараллеливание
В этой статье подробно рассматриваются различные подходы к параллельному программированию.
Наиболее широкоизвестные способы параллельного программирования
- Threads / Processes
- OpenMP
- MPI
Исторически сложилось так, что наиболее часто применяемый способ – это Threads в их различных реинкарнациях. Способ хорош тем что не требует дополнительных библиотек. Чтобы использовать этот вариант, достаточно имеющихся возможностей OC. Обычно используется для скрытия от пользователя различных продолжительных операций, чтобы не терять возможность отрисовки GUI в момент ожидания операции. Основное достоинство – потоки разделяют адресное пространства и принадлежат одному процессу. Поэтому все передачи данных между потоками выполняются максимально быстро. Чаще всего достаточно передать указатель. Синхронизация потоков не затратна и не требует системных вызовов (Syscall) – долгих операций с переключением контекста. Сюда же можно отнести и многопроцессные программы в самом простейшем виде – использующие fork() или что-то подобное из системных функций для порождения нового процесса, но применяющее для синхронизации и обмена данными системное API.
(continue reading…)