C++ Concurrency in Action (Параллельное программирование на C++ в действии) — Anthony Williams — обложка книги
592 страниц
C++
PDF
4.5

C++ Concurrency in Action (Параллельное программирование на C++ в действии)

Практическое руководство по многопоточности и асинхронности в C++

Автор:

Год:

Краткое содержимое:

Введение

Книга «C++ Concurrency in Action» (второе издание, 2019) Энтони Уильямса — это, пожалуй, самый авторитетный и глубокий учебник по многопоточному и параллельному программированию на языке C++. Автор, являющийся членом комитета по стандартизации C++ и разработчиком библиотеки just::thread, не просто описывает синтаксис, а учит мыслить в категориях конкурентности, избегать гонок данных и строить эффективные, безопасные и масштабируемые системы. Книга охватывает как базовые механизмы (std::thread, мьютексы, условные переменные), так и продвинутые темы (атомарные операции, lock-free структуры, модель памяти C++).

О чём книга

Издание 2019 года полностью переработано под стандарты C++14 и C++17. Книга состоит из 13 глав, разделённых на две части: основы и продвинутые техники. Первая часть знакомит с управлением потоками, защитой разделяемых данных, синхронизацией и асинхронными задачами. Вторая часть погружает в атомарные типы, модель памяти C++, проектирование lock-free контейнеров, параллельные алгоритмы и тестирование многопоточного кода. Каждая глава содержит множество практических примеров, от простого пула потоков до реализации очереди без блокировок.

Для кого эта книга

Книга рассчитана на опытных разработчиков на C++, которые уже уверенно пишут на C++11/14/17 и хотят освоить многопоточность. Новичкам в C++ будет сложно — предполагается знание шаблонов, умных указателей, лямбда-выражений и STL. Однако если вы уже имеете базовый опыт работы с потоками в других языках (Java, C#) и хотите понять специфику C++, книга станет отличным мостом.

Что узнает читатель

  • Управление потоками: создание, присоединение, отсоединение, передача аргументов, идентификация потоков.
  • Защита разделяемых данных: std::mutex, std::lock_guard, std::unique_lock, рекурсивные и разделяемые мьютексы, deadlock и его предотвращение.
  • Синхронизация: условные переменные (std::condition_variable), std::future, std::promise, std::packaged_task, std::async.
  • Атомарные операции: std::atomic, модели упорядочения (relaxed, acquire, release, seq_cst), барьеры памяти.
  • Модель памяти C++: формальное описание happens-before, синхронизация, гонки данных.
  • Lock-free программирование: проектирование безблокировочных стеков, очередей, хеш-таблиц.
  • Параллельные алгоритмы: std::for_each, std::find, std::reduce с политиками выполнения (std::execution::par).
  • Тестирование и отладка: поиск гонок, тестирование многопоточного кода, инструменты (ThreadSanitizer).

Сильные стороны

Главное достоинство книги — глубина и точность. Энтони Уильямс не просто показывает, как использовать API, но и объясняет, почему код работает именно так, какие гарантии даёт стандарт и как избежать подводных камней. Особенно ценно подробное описание модели памяти C++ — темы, которая обычно остаётся «чёрным ящиком» для большинства разработчиков. Примеры кода реальны, хорошо прокомментированы и часто сопровождаются диаграммами. Второе издание включает главу о параллельных алгоритмах STL и обновлённые примеры под C++17.

Кому рекомендуется

Книга обязательна к прочтению всем, кто пишет высоконагруженные серверы, игровые движки, финансовые системы, базы данных или любое другое ПО, где важна производительность и корректность при параллельном исполнении. Она также будет полезна разработчикам библиотек и фреймворков, желающим создавать потоко-безопасные компоненты. Если вы готовитесь к собеседованию в компанию, где активно используют C++ (например, в сфере HFT, геймдева или системного программирования), эта книга даст вам фундаментальные знания, которые выделят вас среди других кандидатов.

Рекомендаций