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

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

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

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

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «Параллельное программирование»Учеников на курсе 1 876
Сертификаты, выданные на курсе «Параллельное программирование»Сертификатов выдано 0
Отзывы о курсе «Параллельное программирование»Отзывов получено 13
Рейтинг курса «Параллельное программирование»Рейтинг курса 4.923
Уроки в курсе «Параллельное программирование»Количество уроков 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 уроков