Многопоточное программирование на языке программирования С/С++

Длительность
  • 15 занятий
  • 60 ак. часов
Курс преподают
  • Филипп Андронов Филипп Андронов
  • Михаил Белозёров Михаил Белозёров
  • Федор Петряйкин Федор Петряйкин
Получаемые навыки

– Изучите классическое создание дочерних процессов (через fork) и использование средств межпроцессного взаимодействия (IPC)
– Освоите различные способы создания многопоточного приложения (pthreads, std::thread, boost::thread), а также и более высокоуровневые средства распараллеливания (OpenMP, Intel TBB).
– Научитесь работать с сетью и контейнерами (STL, boost).
– Реализуете протокол HTTP для будущего веб-сервера.

Контроль знаний

Для освоения каждой темы вы выполните практические задания, а в финале сделаете самостоятельный проект. 
В обоих случаях вы можете получить до 50 баллов, при пересчете в оценки баллы распределяются следующим образом:
– 0−39 «неудовлетворительно», 
– 40−49 «удовлетворительно», 
– 50−59 «хорошо», 
– 60–100 «отлично».

Цель курса — изучите основы многопоточного программирования и спроектируете веб-сервер.

C++ остается одним из основных языков разработки для программного обеспечения, в котором критична скорость работы, и используется для многопоточного программирования в сервисах, где нужно обеспечить параллельное выполнение кода. Это могут быть графические движки, системы для научных расчетов или высоконагруженные веб-сервера. Во всех этих случаях особенное внимание уделяется возможности параллельного выполнения задач. Например, почтовый поиск — пользователь желает что-то найти в своем почтовом ящике, он вводит запрос, который поступает на сервер и там исполняется. Этот сервис многопоточный, потому что на сервере «живет» довольно много пользователей и они все могут захотеть искать одновременно. 

В течение семестра на практике изучите подходы к организации многозадачного кода и на примере модельных задач рассмотрите «подводные камни» в таких программах. Потренируетесь в реализации пула потоков — часто используемого в реальных приложениях подхода к организации конкурентного параллельного исполнения кода, а также попрактикуетесь в самостоятельной реализация корутин — подхода, который используется в разработке сетевых приложений и который скоро появится в стандарте C++.

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

Лекция №1

Введение

4 часа 3 часа СР

Смешанное занятие №1

Blocking: Потоки, примитивы c++

4 часа 3 часа СР

Смешанное занятие №2

4 часа 2 часа СР

Смешанное занятие №3

Blocking: Основные приемы проектирвания

4 часа 3 часа СР

Смешанное занятие №4

Async: Сетевое программирование в Linux

4 часа 1 часа СР

Смешанное занятие №5

Async: epoll в несколько потоков

4 часа 3 часа СР

Смешанное занятие №6

Async: Корутины

4 часа 3 часа СР

Смешанное занятие №7

Async: развитие и применение корутин

4 часа 3 часа СР

Смешанное занятие №8

Основы Lock-Free

4 часа 2 часа СР

Смешанное занятие №9

Lock-Free linked list

4 часа 1 часа СР

Смешанное занятие №10

4 часа 3 часа СР

Смешанное занятие №11

Lock-Free: Flat Combine

4 часа 1 часа СР

Смешанное занятие №12

Свободная тема

4 часа 3 часа СР

Смешанное занятие №13

Свободная тема

4 часа

Пересдача №1

Пересдача

4 часа


Также в втором семестре:
Информационный поиск

Разберетесь в сфере задач машинного обучения, освоите основные методы и средства решения таких задач, узнаете, как решается одна из самых сложных проблем искусственного интеллекта — понимание потребностей человека и поиск подходящего решения.

Нейронные сети в машинном обучении

– Получите опыт подбора архитектуры нейронных сетей и ее быстрой реализации на PyTorch.
– Реализуете классификаторов изображений, системы переноса стиля и генерации изображений при помощи GAN. 
– Станете реализовывать нейронные сети как «с нуля», так и на библиотеке PyTorch. 
– Привыкнете читать научные статьи и сможете самостоятельно проводить научное исследование.

© Mail.ru Group, 2011–2020

Обратная связь

Присоединяйся:

Группа ВКонтакте
  • Дизайн:
    Nimax
  • Разработка:
    Лаборатория
    Технопарка
Версия портала - 5.43.1