Параллельное программирование на С++ в действии. Практика разработки многопоточных программ


Параллельное программирование на С в действии. Практика разработки многопоточных программ
Параллельное программирование на С++ в действии. Практика разработки многопоточных программ

Издание:
ISBN: 978-5-94074-448-1
Год публикации: 2012
Ключевые слова:
Автор:
Энтони Уильямс

Переводчик:
А А Слинкин

Жанр:
Параллельное и распределенное программирование, C, C++, C#, Литература ХXI века (эпоха Глобализации экономики), Современные российские издания



Читать фрагмент Иллюстрации

Аннотация:

В наши дни компьютеры с несколькими многоядерными процессорами стали нормой. Стандарт С++11 языка С++ предоставляет развитую поддержку многопоточности в приложениях. Поэтому, чтобы сохранять конкурентоспособность, вы должны овладеть принципами и приемами их разработки, а также новыми средствами языка, относящимися к параллелизму. Книга «Параллельное программирование на С++ в действии» не предполагает предварительных знаний в этой области. Вдумчиво читая ее, вы научитесь писать надежные и элегантные многопоточные программы на С++11. Вы узнаете о том, что такое потоковая модель памяти, и о том, какие средства поддержки многопоточности, в том числе запуска и синхронизации потоков, имеются в стандартной библиотеке. Попутно вы познакомитесь с различными нетривиальными проблемами программирования в условиях параллелизма. В этой главе: ■ Что понимается под параллелизмом и многопоточностью. ■ Зачем использовать параллелизм и многопоточность в своих приложениях. ■ Замечания об истории поддержки параллелизма в С++. ■ Структура простой многопоточной программы на С++. В этой главе: ■ Запуск потоков и различные способы задания кода, исполняемого в новом потоке. ■ Ждать завершения потока или позволить ему работать независимо? ■ Уникальные идентификаторы потоков. В этой главе: ■ Проблемы разделения данных между потоками. ■ Защита данных с помощью мьютексов. ■ Альтернативные средства защиты разделяемых данных. В этой главе: ■ Ожидание события. ■ Ожидание однократного события с будущими результатами ■ Ожидание с ограничением по времени. ■ Использование синхронизации операций для упрощения программы. В этой главе: ■ Детальные сведения о модели памяти С++. ■ Атомарные типы в стандартной библиотеке С++. ■ Операции над атомарными типами. ■ Как можно использовать эти операции для синхронизации потоков. В этой главе: ■ Что понимается под проектированием структур данных, рассчитанных на параллельный доступ? ■ Рекомендации по проектированию таких структур. ■ Примеры реализации параллельных структур данных. В этой главе: ■ Реализация параллельных структур данных без использования блокировок. ■ Техника управления памятью в структурах данных без блокировок. ■ Простые рекомендации по написанию структур данных без блокировок. В этой главе: ■ Методы распределения данных между потоками. ■ Факторы, влияющие на производительность параллельного кода. ■ Как от этих факторов зависит дизайн параллельных структур данных. ■ Безопасность многопоточного кода относительно исключений. ■ Масштабируемость. ■ Примеры реализации параллельных алгоритмов. В этой главе: ■ Пулы потоков. ■ Учет зависимостей между задачами, адресованными пулу. ■ Занимание работ у потоков из пула. ■ Прерывание потоков. В этой главе: ■ Ошибки, связанные с параллелизмом. ■ Поиск ошибок путем тестирования и анализа кода коллегами. ■ Разработка тестов для многопоточных приложений. ■ Тестирование производительности многопоточных приложений.