Параллельное программирование на C++ в действии, Практика разработки многопоточных программ, Энтони У., 2012.
В наши дни компьютеры с несколькими многоядерными процессорами стали нормой. Стандарт C++11 языка C++ предоставляет развитую поддержку многопоточности в приложениях. Поэтому, чтобы сохранять конкурентоспособность, вы должны овладеть принципами и приемами их разработки, а также новыми средствами языка, относящимися к параллелизму.
Книга «Параллельное программирование на C++ в действии» не предполагает предварительных знаний в этой области. Вдумчиво читая ее, вы научитесь писать надежные и элегантные многопоточные программы на С++11. Вы узнаете о том, что такое потоковая модель памяти, и о том, какие средства поддержки многопоточности, в том числе запуска и синхронизации потоков, имеются в стандартной библиотеке. Попутно вы познакомитесь с различными нетривиальными проблемами программирования в условиях параллелизма.
Параллелизм в вычислительных системах.
Говоря о параллелизме в контексте компьютеров, мы имеем в виду, что одна и та же система выполняет несколько независимых операций параллельно, а не последовательно. Идея не нова: многозадачные операционные системы, позволяющие одновременно запускать на одном компьютере несколько приложений с помощью переключения между задачами уже много лет как стали привычными, а дорогие серверы с несколькими процессорами, обеспечивающие истинный параллелизм, появились еще раньше. Новым же является широкое распространение компьютеров, которые не просто создают иллюзию одновременного выполнения задач, а действительно исполняют их параллельно.
Исторически компьютеры, как правило, оснащались одним процессором с одним блоком обработки, или ядром, и это остается справедливым для многих настольных машин и по сей день. Такая машина в действительности способна исполнять только одну задачу в каждый момент времени, но может переключаться между задачами много раз в секунду. Таким образом, сначала одна задача немножко поработает, потом другая, а в итоге складывается впечатление, будто все происходит одновременно. Это называется переключением задач. Тем не менее, и для таких систем мы можем говорить о параллелизме', задачи сменяются очень часто и заранее нельзя сказать, в какой момент процессор приостановит одну и переключится на другую. Переключение задач создает иллюзию параллелизма не только у пользователя, но и у самого приложения. Но так как это всего лишь иллюзия, то между поведением приложения в однопроцессорной и истинно параллельной среде могут существовать тонкие различия. В частности, неверные допущения о модели памяти (см. главу 5) в однопроцессорной среде могут не проявляться. Подробнее эта тема рассматривается в главе 10.
ОГЛАВЛЕНИЕ.
Предисловие.
Благодарности.
Об этой книге.
Об иллюстрации на обложке.
ГЛАВА 1. Здравствуй, параллельный мир!.
ГЛАВА 2. Управление потоками.
ГЛАВА 3. Разделение данных между потоками.
ГЛАВА 4. Синхронизация параллельных операций.
ГЛАВА 5. Модель памяти C++ и атомарные операции.
ГЛАВА 6. Проектирование параллельных структур данных с блокировками.
ГЛАВА 7. Проектирование параллельных структур данных без блокировок.
ГЛАВА 8. Проектирование параллельных программ.
ГЛАВА 9. Продвинутое управление потоками.
ГЛАВА 10. Тестирование и отладка многопоточных приложений.
ПРИЛОЖЕНИЕ A. Краткий справочник по некоторым конструкциям языка C++.
ПРИЛОЖЕНИЕ B. Краткое сравнение библиотек для написания параллельных программ.
ПРИЛОЖЕНИЕ C. Каркас передачи сообщений и полный пример программы банкомата.
ПРИЛОЖЕНИЕ D. Справочник по библиотеке C++ Thread Library.
РЕСУРСЫ.
Печатные ресурсы.
Сетевые ресурсы.
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ.
Купить .
Теги: учебник по программированию :: программирование :: Энтони
Смотрите также учебники, книги и учебные материалы:
- Введение в языки программирования С и C++, Кетков Ю.Л., 2016
- Введение в разработку приложений для встроенных систем на платформе Intel Atom, Граничин О.Н., Лучин P.M., Амелин К.С., Корявко А.В., Кияев В.И., 2016
- Расширение функциональной среды системы Mathematical, монография, Аладьев В.З., Гринь Д.С., 2012
- Программирование-это так просто, программирование-это так сложно, Современный учебник программирования, Андреева Е.В., 2015
- Введение в разработку приложений для смартфонов на ОС Android, Семакова А., 2016
- WordPress для профессионалов, Уильяме Б., Дэмстра Д., Стэрн X., 2014
- Pro Bash Programming, Scripting the GNU-Linux Shell, Johnson C., Varma J.
- Java, Эффективное программирование, Второе издание, Блох Д., 2014