Курс на Stepik
Обложка курса «Параллельное программирование» на Stepik
Бесплатно

Параллельное программирование 4.909

Открыть на
STEPIK.ORG

Курс рассматривает принципы и возможности многопоточного программирования в теории и на практике: классическое многопоточное программирование, алгоритмы и шаблоны || программирования, иные методы повышения производительности систем

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «Параллельное программирование»Учеников на курсе 1 754
Сертификаты, выданные на курсе «Параллельное программирование»Сертификатов выдано 0
Отзывы о курсе «Параллельное программирование»Отзывов получено 11
Рейтинг курса «Параллельное программирование»Рейтинг курса 4.909
Уроки в курсе «Параллельное программирование»Количество уроков 52
Тесты в курсе «Параллельное программирование»Количество квизов 14
Время прохождения курса «Параллельное программирование»Время прохождения курса
Обновления курса «Параллельное программирование»Обновления курса
Дата публикации курса «Параллельное программирование»Дата публикации курса
Последнее обновление курса «Параллельное программирование»Последнее обновление
Сложность normal

Содержание курса

Разделы в курсе «Параллельное программирование» 15 разделов Уроки в курсе «Параллельное программирование» 52 урока Тесты в курсе «Параллельное программирование» 14 тестов Время прохождения курса «Параллельное программирование» 13 ч. Последнее обновление курса «Параллельное программирование» обн. 4 июня 2026

Введение

4 урока
1. История и задачи
2. Общий взгляд на HPC: от SSE к кластерным вычислениям
3. Процессы и потоки
4. Создание потоков

Многопоточность или IPC

5 уроков
1. Механизмы IPC
2. Преимущество многопоточности: скорость обмена данными
3. Преимущество многопоточности: простота
4. Преимущество IPC: безопасность
5. Преимущество IPC: надёжность

Завершение потоков

5 уроков
1. Постановка задачи
2. Завершение POSIX-потоков
3. Примеры кода из glibc
4. Завершение Java-потоков
5. Сравнение механизмов завершения на разных языках

Примитивы синхронизации

8 уроков
1. Необходимость использования примитивов
2. Логика реализации mutex
3. Рекурсивные и нерекурсивные примитивы
4. Read/Write mutex
5. User space / kernel space
6. CAS: spin mutex и атомики
7. RAII, Futex и адаптивные примитивы
8. Condition variables

Ошибки || программирования

3 урока
1. Dead lock
2. Гонки данных (Data race / Race condition)
3. Инверсия приоритетов

Алгоритмы синхронизации

6 уроков
1. Грубая
2. Тонкая
3. Оптимистичная
4. Ленивая
5. Неблокирующая
6. Проблема ABA

Снимки атомарных регистров

3 урока
1. Согласованность и актуальность
2. Lock-free snapshot
3. Wait-free snapshot

Модели памяти

5 уроков
1. Диагностика ошибки с проблемой видимости
2. Протокол поддержки когерентности кешей процессора (MESI)
3. Причины появления memory reordering
4. Барьеры памяти
5. Модели памяти

Lock-free структуры данных: стек и очередь

4 урока
1. Стек Treiber
2. Линеаризуемость
3. Очередь Michael & Scott
4. Проверка корректности параллельных алгоритмов

Профилирование

4 урока
1. Valgrind: анализ и представление через kcachegrind
2. Perf: анализ статистики и flamegraph
3. VTune: анализ ожидания / синхронизации
4. VTune: анализ промашек по кешу

RCU

3 урока
1. Архитектура epoch-based синхронизации
2. Kernel space RCU
3. User space RCU

Flat combining

2 урока
1. TLS
2. Архитектура и производительность FC

Асинхронный ввод/вывод

0 уроков

OpenMP / MPI

0 уроков

Транзакционная память

0 уроков