Книги / IT-менеджмент / Архитектура ПО / The Art of Multiprocessor Programming

The Art of Multiprocessor Programming

Maurice Herlihy, Nir Shavit

Книга посвящена фундаментальным принципам и практическим аспектам программирования для многоядерных и многопроцессорных систем. Авторы, ведущие эксперты в области параллельных вычислений, рассматривают ключевые проблемы синхронизации, взаимного исключения и согласованности данных в многопоточной среде.

В первой части излагаются теоретические основы: модели времени, критические секции, алгоритмы взаимного исключения (включая алгоритм Петерсона и bakery-алгоритм Лэмпорта), а также формальные модели согласованности — от quiescent consistency до линейзуемости. Особое внимание уделяется прогресс-условиям и модели памяти Java.

Вторая часть посвящена примитивам синхронизации и их относительной мощности. Рассматриваются регистры, атомарные снимки, consensus-числа и конструкции, позволяющие строить более сложные синхронизационные структуры из более простых. Это дает читателю глубокое понимание того, какие операции действительно необходимы для решения задач параллельного программирования.

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

Книга содержит множество упражнений и задач, позволяющих закрепить материал. Она будет полезна как студентам старших курсов и аспирантам, изучающим параллельное программирование, так и практикующим разработчикам, стремящимся создавать высокопроизводительные многопоточные приложения.