GAMES GATHERING 2019 KYIV

Багатопотокове програмування в сучасному C++

Запис доповіді: Багатопотокове програмування в сучасному C++

Ігор Майдановський

Зала:
Programming Track

Про що доповідь

Ігор Майдановський розповідає, як краще будувати багатопотокові системи в сучасному C++ у межах одного процесу зі спільною пам'яттю. Він розбирає типові проблеми: гонки даних, логічні гонки (race condition) та взаємні блокування. Пояснює базові примітиви синхронізації: атомарні змінні, семафор, умовну змінну та м'ютекс, і показує, що змішування їх із бізнес-логікою призводить до помилок. Головна порада: відокремити логіку від багатопотоковості за допомогою акторної архітектури з потокобезпечними чергами між вхідними даними, пулом воркерів і виводом результатів. Така схема спрощує код, дає змогу легко масштабувати пул воркерів, шукати вузькі місця та моніторити потік даних. У продакшені радить брати готові реалізації черг. Доповідь розрахована на програмістів із невеликим досвідом.