Книга посвящена рассмотрению некоторых высокоуровневых моделей параллельного и распределенного программирования. В порядке усложнения описываются несколько моделей внутренней организации параллельных программ: ярусно-параллельная форма программы, сети конечных автоматов, сети Петри, модель актеров, а также модель квантовых вычислений. Приводятся примеры программной реализации на C++ с использованием различных средств распараллеливания ([b]OpenMP[/b], [b]MPI[/b], [b]POSIX Threads[/b], [b]Windows API[/b]). В каждом случае рассматриваются вопросы контекстно-независимой реализации конструкций описываемой модели без привязки к конкретным задачам, а также приведены примеры решения с использованием такой реализации некоторых конкретных задач. Некоторые из описанных моделей (к примеру, модель актеров), в настоящий момент приобретают все большую популярность вследствие распространения основанных на ее использовании языков и библиотек. Книга ориентирована на подготовленного читателя в области программирования. Будет полезна программистам, желающим освоить высокоуровневые подходы к организации параллельных и распределенных программ, студентам старших курсов, аспирантам и преподавателям технических ВУЗов, преподающим параллельное программирование. Вот уже несколько лет, как современные компьютеры вплотную приблизились к своему пределу тактовых частот. Производительность процессоров (точнее, их отдельных ядер) перестала нарастать сказочными темпами, и теперь остается возможность обеспечить дальнейшее повышение вычислительных мощностей лишь за счет увеличения их количества: производительность компьютеров начала расти "вширь", а не "в высоту". В связи с этим параллельное программирование уже перестало быть узкоспециализированной дисциплиной для высокопроизводительных вычислений и приобретает все большую актуальность для широких масс представителей программистского сообщества. Есть немало публикаций, посвященных рассмотрению архитектур параллельных вычислительных систем и теоретическим вопросам распараллеливания последовательных алгоритмов. Также существует достаточно учебных пособий и статей, посвященных рассмотрению существующих технологий, программных интерфейсов и библиотек. В то же время, довольно давно создано немало моделей, успешно описывающих выполнение параллельных процессов, которые уже являются основой многих программных технологий и некоторых не слишком популярных инструментов построения параллельных программ. Таким моделям посвящено немало учебного материала теоретического характера, однако ощущается некоторый дефицит в области практического их рассмотрения с доступными примерами программной реализации на основе современных средств. В результате освещения таких моделей лишь с теоретической точки зрения они, порой, остаются вне практического арсенала программиста, отчего возможность использования их при решении конкретной задачи зачастую даже не рассматривается. Настоящее издание стремится в какой-то степени восполнить указанную нишу и попытаться исправить такое положение. В книге приводятся исходные тексты примеров на языке C++ с использованием библиотеки шаблонов [b]STL[/b], в связи с чем необходимо предварительное знакомство читателя с ними. В примерах реализации описанных подходов иллюстрируется использование технологий [b]OpenMP[/b] и [b]MPI[/b], а также низкоуровневых программных интерфейсов [b]Win32 API[/b] и [b]POSIX Threads (pthreads)[/b]. Последние используются в случаях, когда средства высокоуровневых интерфейсов оказываются недостаточно гибкими. Для компиляции приведенных примеров программ могут быть использованы компиляторы [b]MS Visual C++[/b] версии от 8.0 (2005) или [b]GNU C++[/b]. Для компиляции в среде MS Windows программ, использующих функции интерфейса [b]POSIX Threads[/b], возможно использование библиотеки Pthreads-w32 или эмулятора Cygwin.