Владислав Шпилевой — Алгоритм массово-параллельной работы с сокетами для C++
Подробнее о конференции C++ Russia: https://jrg.su/9Sszhd
— — Скачать презентацию с сайта C++ Russia — https://jrg.su/zRxeXN
Владиславу посчастливилось работать в проектах, где было критически важно максимизировать пропускную способность сетевого кода, минимизировать задержку и эффективно масштабироваться на ядрах процессора через многопоточность. Boost::asio — фактически стандарт для сетевого кода на C++, но в редких случаях он недоступен или недостаточен по разным причинам: — Boost может быть недоступен на некоторых нишевых платформах (например, на игровых консолях). — Компания уже имеет собственную "все-в-одном" библиотеку и избегает крупных внешних зависимостей, таких как boost. — Производительность boost::asio под нагрузкой вызывает вопросы, а исходный код бывает труден для понимания. На одном из проектов пришлось искать альтернативу boost::asio по всем этим причинам. В результате спикер разработал новый алгоритм планирования задач общего назначения на С++ и построил вокруг него сетевую библиотеку. В докладе он рассказал про: — Совершенно справедливое равномерное распределение задач между потоками, позволяющее плавно масштабироваться на много ядер CPU. — Поддержку C++20 корутин — можно писать линейный асинхронный код. — Бенчмарки — воспроизводимые и автоматические. — Формальную корректность — алгоритм планирования задач верифицирован с помощью TLA+. — Простоту — алгоритм легко понять и даже портировать на другие языки, помимо C++. Проект в открытом доступе: https://github.com/Gerold103/serverbox.