Обратная связь
В течение семестра студенты реализуют протокол HTTP для будущего веб-сервера, работу по сети, многопоточность.
В процессе обучения предусмотрены практические занятия по каждой теме, в процессе которых студенты зарабатывают баллы (всего 50), а также самостоятельный проект, который сдается в три этапа (всего 50 баллов).
При пересчете баллов студенты могут получить итоговую оценку: 0–59 неудовлетворительно, 60-79 удовлетворительно, 80-99 хорошо, 100 отлично.
Цель курса — формирование у студентов практических навыков многопоточного программирования.
Курс представляет собой изучение основ многопоточного программирования. Рассматриваются как классическое создание дочерних процессов (через fork) и использование средств межпроцессного взаимодействия (IPC), различные способы создания многопоточного приложения (pthreads, std::thread, boost::thread), а также и более высокоуровневые средства распараллеливания (OpenMP, Intel TBB). В курсе дополнительно представлены способы работы с сетью и контейнеры (STL, boost). В процессе обучения каждый студент будут делать индивидуальный проект (веб-сервер), который позволит наработать базовые навыки.
Лекция №1
- Архетектура процессора, процессы, потоки
- Основные проблемы при написании многопоточного кода
4 часа 3 часа СР
Смешанное занятие №1
Blocking: Потоки, примитивы c++
- Memory Model
- Создание потоков
- Умные указатели
- Блокировки
- conditional_variable
4 часа 3 часа СР
Смешанное занятие №2
Blocking: Расширенные примитивы синхронизации
- shared_lock
- striped_lock
- future
4 часа 2 часа СР
Смешанное занятие №3
Blocking: Основные приемы проектирвания
- queues
- threadpool
- thread_local
- core_local
4 часа 3 часа СР
Смешанное занятие №4
Async: Сетевое программирование в Linux
- select
- epoll
- multithreading epoll
4 часа 1 часа СР
Смешанное занятие №5
Async: epoll в несколько потоков
- latency
- throughtput
- Проблемы и решения при работе с epoll в несколько потоков
4 часа 3 часа СР
Смешанное занятие №6
- coroutine basics
- stack based
- ucontext based
- stackless coroutine
4 часа 3 часа СР
Смешанное занятие №7
Async: развитие и применение корутин
- Как интегрировать coroutine с epoll
- Корутины в нескольких потоках
4 часа 3 часа СР
Смешанное занятие №12
- Отвечаем на вопросы
- Рассматриваем какие нибудь задачи
- Разбираемся в непонятных домашках
4 часа 3 часа СР
Смешанное занятие №13
- Отвечаем на вопросы
- Рассматриваем какие нибудь задачи
- Разбираемся в непонятных домашках
4 часа