Многопоточность на C++

Вводный курс в многопоточное программирование на языке C++. Рассматриваются основные сложности написания конкурентного программного кода и базовые примитивы синхронизации. Отдельное внимание уделяется изучению классических задач параллельного программирования, которые демонстрируют решения часто встречающихся проблем.
Курс: C-006
Длительность: 16 ч.
Владелец курса: Замятин Д.

Описание

Курс ориентирован на разработчиков, знакомых с языком программирования C++, но не имеющих опыта разработки конкурентного программного кода.

В курсе подробно рассматриваются сложности, которые возникают при написании многопоточных программ, в частности конкурентный доступ к общему ресурсу и взаимоблокировки. В качестве примеров решения возникающих сложностей приводятся классические задачи: reader-writer problem, producer-consumer problem и задача «об обедающих философах».

Для решения задач применяется широкий спектр примитивов синхронизации, доступных в стандартной библиотеке языка C++, что позволяет совместить изучение фундаментальных вопросов с отработкой практических навыков разработки.

Отдельное внимание уделяется атомарным операциям и написанию lock-free алгоритмов. В связи с этим рассматривается понятие модели памяти, которое чрезвычайно важное для обеспечения корректности работы конкурентных программ и в тоже время достаточно сложное для понимания.

Также в курсе поднимается вопрос обеспечения производительности многопоточных программ, в том числе рассматривается реализация пула потоков.


Разбираемые темы

1. Threads and processes. Concurrency, parallelism and multithreading (теория 0,5 ч)
  • Как реализована многозадачность в современных операционных системах.
  • В чем разница между параллельным и конкурентным выполнением программ .

2. Thread creation and interrupting (теория 0,5 ч, практика 0,5 ч)
  • Как создаются потоки выполнения, базовые методы коммуникации между потоками.

3. Data races, deadlocks, bottlenecks (теория 1 ч)
  • Какие сложности обычно возникают при написании многопоточного кода, к каким проблемам они могут привести.

4. Synchronization: semaphores, mutexes and conditional variables (теория 1 ч, практика 0,5 ч)
  • Обеспечение синхронизации доступа к общим ресурсам при помощи различных примитивов синхронизации.

5. Classical tasks: reader-writer, producer-consumer, dining philosophers (теория 3 ч, практика 6 ч)
  • Часто встречающиеся задачи многопоточного программирования на примерах классических задач.

6. Atomic data types, memory model, lock-free algorithms (теория 1 ч, практика 0,5 ч)
  • Как обеспечить синхронизацию без мьютексов.
  • Атомарные операции и модель памяти.

7. Thread pools (теория 0,5 ч, практика 1 ч)
  • Многопоточность не всегда гарантирует производительность. В некоторых случаях необходимы дополнительные решения, такие как пулы потоков.

Цели

  • Понять основные сложности разработки конкурентного программного кода и способы их устранения;
  • Научиться использовать классические примитивы синхронизации и разобраться с их алгоритмами работы и внутренним представлением;
  • Разобрать решения фундаментальных задач параллельного программирования и найти их аналоги в реальных задачах;
  • Понять, как работают lock-free алгоритмы.

Целевая аудитория

Основная:
  • Разработчики со знанием языка C++, не имеющие опыта работы с потоками.
Дополнительная:
  • Архитекторы, системные проектировщики, тестировщики, разработчики, работающие с другими языками программирования, но желающие иметь представление о написании многопоточного кода.

Предварительная подготовка

Умение понимать код на языке C++. 
После окончания курса выдаётся сертификат на бланке Luxoft Training
Раcписание курса в Цены
Не подходят даты, время или хотите заказать корпоративное обучение для команды?
+
Предложите свой вариант
Онлайн 18 500 руб.
5 200 грн.
NULL

Записаться на курс

Выбрать дату
Если Вам не подходят дата и место проведения тренинга, Вы можете оставить заявку на участие в нем в любом из городов, где представлены филиалы Luxoft Training. Для этого выберите вариант "Открытая дата" и укажите желаемое место проведения курса.
Желаемое место проведения курса
Вы можете оставить заявку на корпоративное обучение сотрудников Вашей компании в любом городе России или Украины, выбрав вариант "Другой город"
Фамилия *

Имя *

Отчество

Контактный E-mail *

Компания *

Телефон *

Город *

Комментарий
Оценка и обучение ИТ-специалистов по ключевым направлениям разработки программного обеспечения. Курсы от экспертов-практиков по языкам программирования, системному и бизнес-анализу, архитектуре ПО, ручному и автоматизированному тестированию ПО, Big Data и машинному обучению, управлению проектами и Agile. Luxoft Training – первый учебный центр в России, авторизованный IIBA. Действует скидка 10% на обучение физических лиц.
Остались вопросы?
Связаться с нами
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.