параллелизм
Пишите правильные, эффективные многопоточные C++ — потоки, синхронизация, атомы и параллельные алгоритмы.
Трэды и синхронизация
std::thread, std::jthread & Thread Management
Научитесь создавать и управлять потоками с помощью std::thread и C++20. Поймите, что нужно объединиться против отсоединения, отменить сотрудничество с токенами остановки, локальным хранилищем потоков и обработкой исключений через границы потоков.
Мутексы, замки и критические секции
Основные примитивы синхронизации: mutex, lock guard, unique lock, scoped lock, shared mutex. Научитесь защищать общие данные, предотвращать тупики и понимать разницу между расами данных и условиями гонки.
Переменные состояния и производитель-потребитель
Используйте переменные состояния для эффективной координации потоков. Постройте безопасную очередь производителя-потребителя, обработайте ложные пробуждения и избегайте потерянной проблемы пробуждения.
Async, Atomics и параллелизм
std::async, std::future и std::promise
Используйте абстракции параллелизма более высокого уровня: запускайте асинхронные задачи со std::async, извлекайте результаты со std::future и вручную устанавливайте значения или исключения со std::promise.
Атомные операции и заказ памяти
Поймите программирование без блокировки с помощью std::atomic. Мастер-упорядочения памяти (расслабленные, приобретайте, выпускайте, seq cst), реализуйте шпинлок с атомным флагом и изучите шаблон сравнения и замены (CAS).
Параллельные алгоритмы и исполнительная политика
Использование параллельного STL C++17 для параллелизации сортировки, преобразования и сокращения с политикой исполнения. Поймите, когда параллелизм помогает, закон Амдала и практический дизайн бассейна потоков.