Энтони Уильямс - Параллельное программирование на С++ в действии. Практика разработки многопоточных программ
Название: | Параллельное программирование на С++ в действии. Практика разработки многопоточных программ | |
Автор: | Энтони Уильямс | |
Жанр: | Современные российские издания, Литература ХXI века (эпоха Глобализации экономики), C, C++, C#, Параллельное и распределенное программирование | |
Изадано в серии: | неизвестно | |
Издательство: | ДМК Пресс | |
Год издания: | 2012 | |
ISBN: | 978-5-94074-448-1 | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Параллельное программирование на С++ в действии. Практика разработки многопоточных программ"
В наши дни компьютеры с несколькими многоядерными процессорами стали нормой. Стандарт С++11 языка С++ предоставляет развитую поддержку многопоточности в приложениях. Поэтому, чтобы сохранять конкурентоспособность, вы должны овладеть принципами и приемами их разработки, а также новыми средствами языка, относящимися к параллелизму.
Книга «Параллельное программирование на С++ в действии» не предполагает предварительных знаний в этой области. Вдумчиво читая ее, вы научитесь писать надежные и элегантные многопоточные программы на С++11. Вы узнаете о том, что такое потоковая модель памяти, и о том, какие средства поддержки многопоточности, в том числе запуска и синхронизации потоков, имеются в стандартной библиотеке. Попутно вы познакомитесь с различными нетривиальными проблемами программирования в условиях параллелизма. В этой главе:■ Что понимается под параллелизмом и многопоточностью.
■ Зачем использовать параллелизм и многопоточность в своих приложениях.
■ Замечания об истории поддержки параллелизма в С++.
■ Структура простой многопоточной программы на С++.
В этой главе:■ Запуск потоков и различные способы задания кода, исполняемого в новом потоке.
■ Ждать завершения потока или позволить ему работать независимо?
■ Уникальные идентификаторы потоков.
В этой главе:■ Проблемы разделения данных между потоками.
■ Защита данных с помощью мьютексов.
■ Альтернативные средства защиты разделяемых данных.
В этой главе:■ Ожидание события.
■ Ожидание однократного события с будущими результатами
■ Ожидание с ограничением по времени.
■ Использование синхронизации операций для упрощения программы.
В этой главе:■ Детальные сведения о модели памяти С++.
■ Атомарные типы в стандартной библиотеке С++.
■ Операции над атомарными типами.
■ Как можно использовать эти операции для синхронизации потоков.
В этой главе:■ Что понимается под проектированием структур данных, рассчитанных на параллельный доступ?
■ Рекомендации по проектированию таких структур.
■ Примеры реализации параллельных структур данных.
В этой главе:■ Реализация параллельных структур данных без использования блокировок.
■ Техника управления памятью в структурах данных без блокировок.
■ Простые рекомендации по написанию структур данных без блокировок.
В этой главе:■ Методы распределения данных между потоками.
■ Факторы, влияющие на производительность параллельного кода.
■ Как от этих факторов зависит дизайн параллельных структур данных.
■ Безопасность многопоточного кода относительно исключений.
■ Масштабируемость.
■ Примеры реализации параллельных алгоритмов.
В этой главе:■ Пулы потоков.
■ Учет зависимостей между задачами, адресованными пулу.
■ Занимание работ у потоков из пула.
■ Прерывание потоков.
В этой главе:■ Ошибки, связанные с параллелизмом.
■ Поиск ошибок путем тестирования и анализа кода коллегами.
■ Разработка тестов для многопоточных приложений.
■ Тестирование производительности многопоточных приложений.
Читаем онлайн "Параллельное программирование на С++ в действии. Практика разработки многопоточных программ" (ознакомительный отрывок). [Страница - 4]
Манера одеваться за последние 100 лет сильно изменилась, и различия между областями, когда-то столь разительные, сгладились. Теперь трудно отличить друг от друга даже выходцев с разных континентов. Но можно взглянуть на это и с оптимизмом — мы обменяли культурное и визуальное разнообразие на иное устройство личной жизни — основанное на многостороннем и стремительном технологическом и интеллектуальном развитии.
Издательство Manning откликается на новации, инициативы и курьезы в компьютерной отрасли обложками своих книг, на которых представлено широкое разнообразие местных укладов и театральной жизни в позапрошлом веке. Мы возвращаем его в виде иллюстраций из этой коллекции.
Глава 1. Здравствуй, параллельный мир!
В этой главе:
■ Что понимается под параллелизмом и многопоточностью.■ Зачем использовать параллелизм и многопоточность в своих приложениях.
■ Замечания об истории поддержки параллелизма в С++.
■ Структура простой многопоточной программы на С++.
Для программистов на языке С++ настали радостные дни. Спустя тринадцать лет после публикации первой версии стандарта С++ в 1998 году комитет по стандартизации С++ решил основательно пересмотреть как сам язык, так и поставляемую вместе с ним библиотеку. Новый стандарт С++ (обозначаемый С++11 или С++0х), опубликованный в 2010 году, несёт многочисленные изменения, призванные упростить программирование на С++ и сделать его более продуктивным.
К числу наиболее существенных новшеств в стандарте С++11 следует отнести поддержку многопоточных программ. Впервые комитет официально признал существование многопоточных приложений, написанных на С++, и включил в библиотеку компоненты для их разработки. Это позволит писать на С++ многопоточные программы с гарантированным поведением, не полагаясь на зависящие от платформы расширения. И как раз вовремя, потому что разработчики, стремясь повысить производительность приложений, все чаще посматривают в сторону параллелизма вообще и многопоточного программирования в особенности.
Эта книга о том, как писать на С++ параллельные программы с несколькими потоками и о тех средствах самого языка и библиотеки времени выполнения, благодаря которым это стало возможно. Я начну с объяснения того, что понимаю под параллелизмом и многопоточностью и для чего это может пригодиться в приложениях. После краткого отвлечения на тему о том, когда программу не следует делать многопоточной, я в общих чертах расскажу о поддержке параллелизма в С++ и закончу главу примером простой параллельной программы. Читатели, имеющие опыт разработки многопоточных приложений, могут пропустить начальные разделы. В последующих главах мы рассмотрим более сложные примеры и детально изучим библиотечные средства. В конце книги приведено подробное справочное руководство по всем включенным в стандартную библиотеку С++ средствам поддержки многопоточности и параллелизма.
Итак, что же я понимаю под параллелизмом и многопоточностью?
1.1. Что такое параллелизм?
Если упростить до предела, то параллелизм — это одновременное выполнение двух или более операций. В жизни он встречается на каждом шагу: мы можем одновременно идти и разговаривать или одной рукой делать одно, а второй — другое. Ну и, разумеется, каждый из нас живет своей жизнью независимо от других — вы смотрите футбол, я в это время плаваю и т.д.1.1.1. Параллелизм в вычислительных системах
Говоря о параллелизме в контексте компьютеров, мы имеем в виду, что одна и та же система выполняет несколько независимых операций --">Книги схожие с «Параллельное программирование на С++ в действии. Практика разработки многопоточных программ» по жанру, серии, автору или названию:
Александр Сергеевич Антонов - Параллельное программирование с использованием технологии MPI: Учебное пособие Жанр: Параллельное и распределенное программирование Год издания: 2004 |
Сет Дж Джонс - Война США в Афганистане. На кладбище империй Жанр: Новейшая история Год издания: 2013 |
Тим Вейнер - ФБР. Правдивая история Жанр: Спецслужбы Год издания: 2014 |
Алексей Николаевич Ардашев - Снайперская война Жанр: Военная история Год издания: 2010 |