Algorithm of Massively Parallel Networking in C++

Vladislav Shpilevoy

2025

🦆

- Привет, друзья, я Влад. Уже 10 лет пишу код на C и C++. За это время работал с базами данных, играми, и рекламой. - Во всех этих областях я очень много работал с сетевым кодом, насмотрелся на разные проблемы и решения. - И сегодня я представляю алгоритм, который я сделал для, как мне кажется, довольно эффективной работы с сетью, реализованный на C++, полностью Open Source. - Что-то такое вы вряд ли раньше видели. Не обязательно в хорошем смысле. - В том плане, что одно и то же решение в разных контекстах может быть и то худшим, то лучшим. - Но я обнаружил, что мой алгоритм оказался субъективно заметно лучше того, с чем я работал до него. - Подчеркиваю, что сегодня основное внимание мы уделяем самому алгоритму и некоторым деталям, а не его реализации как целому - Потому что в этом не очень много смысла. Существующие проекты вряд ли будут менять свой сетевой стек на новую библиотеку. А новые большие проекты появляются не так уж часто. - Но я верю в ценность распространения идей. Возможно, мои покажутся кому-то достаточно интересными, чтобы применить их у себя, даже не обязательно взяв мою реализацию. - Надеюсь, вам понравится! ## Для читателей В заметках докладчика знак (>>) означает, что для перехода к следующему кадру нужно нажать «Пробел».
Algorithm of Massively Parallel Networking in C++ Vladislav Shpilevoy 2025 🦆

C++ Russia 2025: Algorithm of Massively Parallel Networking in C++

By Vladislav Shpilevoy

C++ Russia 2025: Algorithm of Massively Parallel Networking in C++

Мой доклад посвящен производительности серверов на C++ с использованием альтернативы boost::asio для массово параллельной сетевой работы. Boost::asio — фактически стандарт для сетевого кода на C++, но в редких случаях он недоступен или недостаточен по разным причинам. Используя опыт работы над высокопроизводительными проектами, я разработал новый алгоритм планирования задач, построил на его основе сетевую библиотеку и представляю их в докладе. Самые интересные детали — справедливое распределение нагрузки на процессор, поддержка C++ корутин, формальная верификация на TLA+ и воспроизводимые бенчмарки, показывающие ускорение в N раз от boost::asio. Проект в открытом доступе: https://github.com/Gerold103/serverbox.

  • 66