Грокаем конкурентность, Бобров К., 2025.
Конкурентность позволяет эффективно выполнять компьютерные программы, разделяя их на задачи, которые можно запускать независимо. Такой подход помогает ускорить игровую графику, обучать большие модели искусственного интеллекта, быстро масштабировать веб-приложения, оптимизировать обработку больших данных и решать многие другие задачи. Работать с конкурентностью непросто, так что эта книга постепенно введет вас в курс дела, а помогут в этом интересные примеры, забавные иллюстрации и понятный код на Python.
Вы изучите приемы, с помощью которых сможете программировать многоядерные и графические процессоры. а также другие высокопроизводительные системы. Кирилл Бобров обходится без сложной математики, технического жаргона и тяжеловесных научных рассуждений, предпочитая простые и доступные объяснения.

Почему конкурентность важна.
Конкурентность играет чрезвычайно важную роль в разработке программных продуктов. Спрос на высокопроизводительные приложения и конкурентные системы таков, что конкурентное программирование становится критически важным навыком для разработчиков.
Конкурентное программирование — не новое понятие, но за последние годы внимание к нему существенно усилилось. По мере того как в современных компьютерных системах растет количество ядер и процессоров, конкурентное программирование превращается в необходимое требование для разработки ПО. Компании ищут разработчиков, которые уверенно владеют конкурентным программированием, потому что оно часто оказывается единственным выходом в ситуациях, когда нужна высокая производительность, но вычислительные ресурсы ограничены.
Самое значительное преимущество конкурентного программирования (и исторически первая причина для исследований в этой области) состоит в том, что оно помогает повысить производительность систем. Разберемся, почему это важно.
ОГЛАВЛЕНИЕ.
Предисловие.
Благодарности.
Об этой книге.
Для кого эта книга.
Как устроена эта книга.
О коде в книге.
Форум liveBook.
Об авторе.
От издательства.
ЧАСТЬ I. ОРКЕСТР ОСЬМИНОГОВ. СИМФОНИЯ КОНКУРЕНТНОСТИ.
Глава 1. Знакомство с конкурентностью.
Почему конкурентность важна.
Уровни конкурентности.
Что вы узнаете из этой книги.
Итоги.
Глава 2. Последовательное и параллельное выполнение.
Обзор основных понятий: что такое программа.
Последовательное выполнение.
Требования к параллельным вычислениям.
Параллельные вычисления.
Закон Амдала.
Закон Густафсона.
Конкурентность и параллелизм.
Итоги.
Глава 3. Как работают компьютеры.
Процессор.
Система выполнения.
Архитектура компьютерных систем.
Уровни конкурентного оборудования.
Итоги.
Глава 4. Структурные элементы конкурентности.
Этапы конкурентного программирования.
Потоки.
Итоги.
Глава 5. Межпроцессная коммуникация.
Типы коммуникации.
Пул потоков.
Снова о подборе паролей.
Итоги.
ЧАСТЬ II. ЩУПАЛЬЦА КОНКУРЕНТНОСТИ: МНОГОЗАДАЧНОСТЬ, ДЕКОМПОЗИЦИЯ И СИНХРОНИЗАЦИЯ.
Глава 6. Многозадачность.
Приложения с интенсивными вычислениями (CPU-bound) и интенсивным вводом/выводом (l/0-bound).
Почему необходима многозадачность.
Общие принципы многозадачности.
Многозадачные среды.
Итоги.
Глава 7. Декомпозиция.
Анализ зависимостей.
Декомпозиция задач.
Декомпозиция задач: паттерн «Конвейер».
Декомпозиция данных.
Уровень детализации.
Итоги.
Глава 8. Как решать проблемы конкурентности: ситуации гонки и синхронизация.
Общие ресурсы.
Ситуация гонки.
Синхронизация.
Итоги.
Глава 9. Как решать проблемы конкурентности: взаимные блокировки и нехватка ресурсов.
Обедающие философы.
Взаимные блокировки.
Нехватка ресурсов.
Как проектировать синхронизацию.
Несколько слов напоследок.
Итоги.
ЧАСТЬ III. АСИНХРОННЫЕ ОСЬМИНОГИ. ИСТОРИЯ О КОНКУРЕНТНОМ ВЫПОЛНЕНИИ СО ВКУСОМ ПИЦЦЫ.
Глава 10. Неблокирующий ввод/вывод.
Мир распределенных вычислений.
Модель «клиент — сервер».
Служба заказа пиццы.
Блокирующий ввод/вывод.
Неблокирующий ввод/вывод.
Итоги.
Глава 11. Событийная конкурентность.
События.
Обратные вызовы.
Цикл событий.
Мультиплексирование ввода/вывода.
Событийный сервер для заказа пиццы.
Паттерн «Реактор».
Синхронизация при передаче сообщений.
Модели ввода/вывода.
Итоги.
Глава 12. Асинхронная коммуникация.
Зачем нужна асинхронность.
Асинхронные вызовы процедур.
Кооперативная многозадачность.
Преднамеченные объекты.
Кооперативный сервер для заказа пиццы.
Асинхронная пиццерия.
Асинхронная модель: выводы.
Итоги.
Глава 13. Как писать конкурентные приложения.
Так что же такое конкурентность?.
Методология Фостера.
Умножение матриц.
Распределенный подсчет слов.
Итоги.
Эпилог.
Купить .
Теги: учебник по программированию :: программирование :: Бобров