Уровень сложности:
Длительность курса: 24 ак.ч.
График обучения: 3 дня по 8 ак.ч. или 6 дней по 4 ак.ч.
Аннотация
В наши дни компьютеры с несколькими многоядерными процессорами стали нормой, соответственно повысился интерес к разработке параллельных программ. Стандарт C++11, C++14, C++17, C++20 языка C++ предоставляет прикладному программисту средства для разработки многопоточных приложений. Эти средства (набор функций и классов) не зависят от платформы и ОС, тем самым обеспечивая портируемость приложений.
Целью данного курса является освоение принципов и приемов параллельного программирования, а также овладение новыми средствами языка для запуска потоков, организации их взаимодействия и синхронизации.
Знания и умения, полученные в результате обучения
После окончания обучения программист сможет:
- распараллеливать задачи посредством новой многопоточной составляющей стандартной библиотеки;
- использовать возможности новой составляющей стандартной библиотеки chrono для манипулирования интервалами и моментами времени;
- запускать потоки как синхронно, так и асинхронно;
- синхронизировать выполнение потоков;
- обеспечивать взаимодействие потоков;
- в родительском потоке обрабатывать исключения, сгенерированные дочерним потоком;
- иметь представление о модели памяти С++;
- освоить приемы программирования без блокировок.
Курсы связанных направлений
Занятия уже начались или скоро начнутся
Запланированные занятия
14 600 ₽
Расчёт стоимости с учётом возможных скидок
18 350 ₽
Скидки предоставляются в зависимости от количества слушателей,
суммы договора и других условий, оговариваемых с Заказчиком.
Расчёт стоимости с учётом возможных скидок представлен как справочная информация.
Фактический размер скидки может несколько отличаться из-за округления значения суммы.
Внимательно ознакомьтесь с условиями действующих
акций и скидок...
Начальные требования
- Уверенное манипулирование классами;
- Владение приемами обобщенного программирования (templates);
- Использование нововведений, добавленных в ядро языка и стандартную библиотеку согласно стандарту С++11, С++14, С++17, C++20 (шаблонами с переменным числом параметров, лямбда функциями, и т.д.).
Тематический план
Тема 1. Введение в параллельное программирование.
- Парадигмы параллельного программирования.
- Проблемы параллельного программирования.
Тема 2. Библиотека CHRONO.
- Моменты времени.
- Интервалы времени.
Тема 3. Низкоуровневые средства запуска потоков.
- Запуск потока посредством объекта std::thread.
- Ожидание завершения потока.
- Запуск обособленных потоков.
- Пространство имен this_thread.
Тема 4. Обработка межпоточных исключений.
- Проблемы обработки межпоточных исключений.
- Средства для обработки межпоточных исключений.
Тема 5. Синхронизация задач. Мьютексы.
- Проблемы конкурентного программирования.
- Классы поддержки мьютексов.
Тема 6. Высокоуровневые средства запуска и взаимодействия потоков.
- Синхронный и асинхронный запуск потоков.
- Обработка результата выполнения потока.
- Обработка исключений, сгенерированных потоком.
Тема 7. Синхронизация задач. Условные переменные.
Тема 8. Модель памяти С++ 11.
- Проблемы конкурентного программирования.
- Понятие модели памяти С++11.
- Средства для управления моделью памяти.
Тема 9. Программирование без блокировок.
- Порядок исполнения.
- Барьеры.
- Средства принудительного упорядочения кода.
- Виды принудительного упорядочения.
Тема 10. Локальная память потока (TLS).
- Проблемы разделения данных потоками.
- Спецификатор класса хранения thread_local.