^
Начало
Установить закладку
+ Настройки
14 | 16 | 18 | 20 | 22 | 24
Ширина текста:
50% | 60% | 70% | 80% | 90% | 100%
Шрифт:
Цвет текста:
Установить
Цвет фона:
Установить
Сбросить настройки
Предисловие
Благодарности
Об этой книге
Об иллюстрации на обложке
Глава 1.
Здравствуй, параллельный мир!
1.1. Что такое параллелизм?
1.2. Зачем нужен параллелизм?
1.3. Параллелизм и многопоточность в С++
1.4. В начале пути
1.5. Резюме
Глава 2.
Управление потоками
2.1. Базовые операции управления потоками
2.2. Передача аргументов функции потока
2.3. Передача владения потоком
2.4. Задание количества потоков во время выполнения
2.5. Идентификация потоков
2.6. Резюме
Глава 3.
Разделение данных между потоками
3.1. Проблемы разделения данных между потоками
3.2. Защита разделяемых данных с помощью мьютексов
3.3. Другие средства защиты разделяемых данных
3.4. Резюме
Глава 4.
Синхронизация параллельных операций
4.1. Ожидание события или иного условия
4.2. Ожидание одноразовых событий с помощью механизма будущих результатов
4.3. Ожидание с ограничением по времени
4.4. Применение синхронизации операций для упрощения кода
4.5. Резюме
Глава 5.
Модель памяти С++ и атомарные операции
5.1. Основы модели памяти
5.2. Атомарные операции и типы в С++
5.3. Синхронизация операций и принудительное упорядочение
5.4. Резюме
Глава 6
Проектирование параллельных структур данных с блокировками
6.1. Что понимается под проектированием структур данных, рассчитанных на параллельный доступ?
6.2. Параллельные структуры данных с блокировками
6.3. Проектирование более сложных структур данных с блокировками
6.4. Резюме
Глава 7
Проектирование параллельных структур данных без блокировок
7.1. Определения и следствия из них
7.2. Примеры структур данных, свободных от блокировок
7.3. Рекомендации по написанию структур данных без блокировок
Глава 8.
Проектирование параллельных программ
8.1. Методы распределения работы между потоками
8.2. Факторы, влияющие на производительность параллельного кода
8.3. Проектирование структур данных для повышения производительности многопоточной программы
8.4. Дополнительные соображения при проектировании параллельных программ
8.5. Проектирование параллельного кода на практике
8.6. Резюме
Глава 9.
Продвинутое управление потоками
9.1. Пулы потоков
9.2. Прерывание потоков
9.3. Резюме
Глава 10.
Тестирование и отладка многопоточных приложений
10.1. Типы ошибок, связанных с параллелизмом
10.2. Методы поиска ошибок, связанных с параллелизмом
10.3. Резюме
Приложение А.
Краткий справочник по некоторым конструкциям языка С++
А.1. Ссылки на r-значения
А.2. Удаленные функции
А.3. Умалчиваемые функции
А.4. constexpr-функции
А.5. Лямбда-функции
А.6. Шаблоны с переменным числом параметров
А.7. Автоматическое выведение типа переменной
А.8. Поточно-локальные переменные
А.9. Резюме
Приложение В.
Краткое сравнение библиотек для написания параллельных программ
Приложение С.
Каркас передачи сообщений и полный пример программы банкомата
Приложение D
Справочник по библиотеке С++ Thread Library
D.1. Заголовок <chrono>
D.2. Заголовок <condition_variable>
D.3. Заголовок <atomic>
D.4. Заголовок <future>
D.5. Заголовок <mutex>
D.6. Заголовок <ratio>
D.7. Заголовок <thread>
Ресурсы
Печатные ресурсы
Сетевые ресурсы