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

Описание

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

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

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

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

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


После прохождения курса выдается
сертификат на бланке IBS Training Center

Цели

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

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

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

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

Умение понимать код на языке C++. 

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

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 ч)
  • Многопоточность не всегда гарантирует производительность. В некоторых случаях необходимы дополнительные решения, такие как пулы потоков.

Раcписание курсов
Вид:
Регистрируйтесь на следующий курс
Предварительная регистрация гарантирует участие в обучении. Мы обязательно оповестим вас, когда курс будет запланирован
+
Ваши преимущества
Экспертность
Тренеры-эксперты из реальных проектов крупнейших компаний, лидеров в своей отрасли
Живое обучение
“Живая” коммуникация с тренером даже в онлайн-формате
Практика
Максимально наполненные практикой занятия, работа в группах, выполнение домашних заданий
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.