Перейти к содержимому
Модуль 7

параллелизм

Пишите правильные, эффективные многопоточные C++ — потоки, синхронизация, атомы и параллельные алгоритмы.

Трэды и синхронизация

  1. std::thread, std::jthread & Thread Management

    Научитесь создавать и управлять потоками с помощью std::thread и C++20. Поймите, что нужно объединиться против отсоединения, отменить сотрудничество с токенами остановки, локальным хранилищем потоков и обработкой исключений через границы потоков.

  2. Мутексы, замки и критические секции

    Основные примитивы синхронизации: mutex, lock guard, unique lock, scoped lock, shared mutex. Научитесь защищать общие данные, предотвращать тупики и понимать разницу между расами данных и условиями гонки.

  3. Переменные состояния и производитель-потребитель

    Используйте переменные состояния для эффективной координации потоков. Постройте безопасную очередь производителя-потребителя, обработайте ложные пробуждения и избегайте потерянной проблемы пробуждения.

Async, Atomics и параллелизм

  1. std::async, std::future и std::promise

    Используйте абстракции параллелизма более высокого уровня: запускайте асинхронные задачи со std::async, извлекайте результаты со std::future и вручную устанавливайте значения или исключения со std::promise.

  2. Атомные операции и заказ памяти

    Поймите программирование без блокировки с помощью std::atomic. Мастер-упорядочения памяти (расслабленные, приобретайте, выпускайте, seq cst), реализуйте шпинлок с атомным флагом и изучите шаблон сравнения и замены (CAS).

  3. Параллельные алгоритмы и исполнительная политика

    Использование параллельного STL C++17 для параллелизации сортировки, преобразования и сокращения с политикой исполнения. Поймите, когда параллелизм помогает, закон Амдала и практический дизайн бассейна потоков.