РуЛиб - онлайн библиотека > Гримм Райнер > Программы > Параллельное программирование на современном С++

Читаем онлайн «Параллельное программирование на современном С++»

стр.
    1
Райнер Гримм
Параллельное программирование
на современном языке C++
Concurrency
with Modern C++
What every professional C++ programmer
should know about concurrency
Rainer Grimm
Параллельное
программирование
на современном языке C++
Что каждый профессионал должен знать
о параллельном программировании
Райнер Гримм
Москва, 2022
УДК 004.4
ББК 32.973.202
Г84
Г84
Гримм Р.
Параллельное программирование на современном языке C++ / пер.
с англ. В. Ю. Винника. – М.: ДМК Пресс, 2022. – 616 с.: ил.
ISBN 978-5-97060-957-6
Книга во всех подробностях освещает параллельное программирование на
современном языке C++. Особое внимание уделено опасностям и трудностям
параллельного программирования (например, гонке данных и мертвой блокировке) и способам борьбы с ними. Приводятся многочисленные примеры кода,
позволяющие читателю легко закрепить теорию на практических примерах.
Издание адресовано читателям, которые хотят освоить параллельное программирование на одном из наиболее распространенных языков.
УДК 004.4
ББК 32.973.202
Copyright Concurrency with Modern C++ published by Rainer Grimm. Copyright @2020
Rainer Grimm
Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения
владельцев авторских прав.
ISBN 978-5-97060-957-6 (рус.)
© Rainer Grimm, 2020
© Перевод, оформление, издание,
ДМК Пресс, 2022
Дизайн обложки разработан с использованием ресурса freepik.com.
Содержание
От издательства. ...................................................................................................17
Введение. .................................................................................................................18
КРАТКИЙ ОБЗОР ..............................................................................................22
1. Параллельное программирование и современный
язык C++....................................................................................................................23
1.1. Стандарты C++ 11 и C++ 14: закладка фундамента.........................................24
1.1.1. Модели памяти. ............................................................................................24
1.1.1.1. Атомарные переменные. .....................................................................25
1.1.2. Управление потоками..................................................................................25
1.1.2.1. Классы для поддержки потоков..........................................................25
1.1.2.2. Данные в совместном доступе............................................................26
1.1.2.3. Локальные данные потока...................................................................27
1.1.2.4. Переменные условия............................................................................27
1.1.2.5. Кооперативное прерывание потоков (стандарт C++ 20).................28
1.1.2.6. Семафоры (стандарт C++ 20). ..............................................................28
1.1.2.7. Защёлки и барьеры (стандарт C++ 20)................................................28
1.1.2.8. Задания...................................................................................................28
1.1.2.9. Синхронизированные потоки вывода (стандарт С++ 20). ..............29
1.2. Стандарт C++ 17. Параллельные алгоритмы в стандартной библиотеке.....29
1.2.1. Политики выполнения.................................................................................30
1.2.2. Новые параллельные алгоритмы...............................................................30
1.3. Сопрограммы в стандарте C++ 20......................................................................30
1.4. Учебные примеры................................................................................................31
1.4.1. Вычисление суммы элементов вектора....................................................31
1.4.2. Потокобезопасное создание объекта-одиночки. ....................................31
1.4.3. Поэтапная оптимизация с использованием инструмента CppMem. ...31
1.4.4. Быстрая синхронизация потоков...............................................................31
1.4.5. Вариации на тему фьючерсов.....................................................................31
1.4.6. Модификации и обобщения генераторов. ...............................................32
1.4.7. Способы управления заданиями................................................................32
1.5. Будущее языка C++. .............................................................................................32
1.5.1. Исполнители. ................................................................................................32
1.5.2. Расширенные фьючерсы.............................................................................33
1.5.3. Транзакционная память..............................................................................33
1.5.4. Блоки заданий...............................................................................................33
1.5.5. Библиотека для векторных вычислений...................................................34
1.6. Шаблоны и эмпирические правила. .................................................................34
6

1.6.1. Шаблоны синхронизации............................................................................34
1.6.2. Шаблоны параллельной архитектуры.......................................................34
1.6.3. Эмпирические правила. ..............................................................................35
1.7. Структуры данных................................................................................................35
1.8. Сложности параллельного программирования..............................................35
1.9. Библиотека для работы со временем................................................................35
1.10. Обзор инструментального средства CppMem. ..............................................35
1.11. Пояснение некоторых терминов.....................................................................36
ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
В ПОДРОБНОСТЯХ ..........................................................................................37
2. Модель памяти.................................................................................................38
2.1. Начальное представление о модели

Конец ознакомительного отрывка

Купить и читать книгу!

стр.
    1