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